keepalived: allow vrrp traffic on a dedicated interface
Signed-off-by: Dimitri Savineau <dimitri.savineau@enovance.com>
This commit is contained in:
@@ -18,6 +18,9 @@
|
|||||||
# Install Load-Balancer node (HAproxy + Keepalived)
|
# Install Load-Balancer node (HAproxy + Keepalived)
|
||||||
#
|
#
|
||||||
# === Parameters:
|
# === Parameters:
|
||||||
|
# [*keepalived_vrrp_interface*]
|
||||||
|
# (optional) Networking interface to bind the vrrp traffic.
|
||||||
|
# Defaults to false (disabled)
|
||||||
#
|
#
|
||||||
# [*keepalived_public_interface*]
|
# [*keepalived_public_interface*]
|
||||||
# (optional) Networking interface to bind the VIP connected to public network.
|
# (optional) Networking interface to bind the VIP connected to public network.
|
||||||
@@ -185,6 +188,7 @@ class cloud::loadbalancer(
|
|||||||
$haproxy_auth = 'admin:changeme',
|
$haproxy_auth = 'admin:changeme',
|
||||||
$keepalived_state = 'BACKUP',
|
$keepalived_state = 'BACKUP',
|
||||||
$keepalived_priority = '50',
|
$keepalived_priority = '50',
|
||||||
|
$keepalived_vrrp_interface = false,
|
||||||
$keepalived_public_interface = 'eth0',
|
$keepalived_public_interface = 'eth0',
|
||||||
$keepalived_public_ipvs = ['127.0.0.1'],
|
$keepalived_public_ipvs = ['127.0.0.1'],
|
||||||
$keepalived_internal_interface = 'eth1',
|
$keepalived_internal_interface = 'eth1',
|
||||||
@@ -247,6 +251,11 @@ class cloud::loadbalancer(
|
|||||||
} else {
|
} else {
|
||||||
$keepalived_public_ipvs_real = $keepalived_public_ipvs
|
$keepalived_public_ipvs_real = $keepalived_public_ipvs
|
||||||
}
|
}
|
||||||
|
if $keepalived_vrrp_interface {
|
||||||
|
$keepalived_vrrp_interface_real = $keepalived_vrrp_interface
|
||||||
|
} else {
|
||||||
|
$keepalived_vrrp_interface_real = $keepalived_public_interface_real
|
||||||
|
}
|
||||||
# end of deprecation support
|
# end of deprecation support
|
||||||
|
|
||||||
# Fail if OpenStack and Galera VIP are not in the VIP list
|
# Fail if OpenStack and Galera VIP are not in the VIP list
|
||||||
@@ -271,7 +280,7 @@ class cloud::loadbalancer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
keepalived::instance { '1':
|
keepalived::instance { '1':
|
||||||
interface => $keepalived_public_interface_real,
|
interface => $keepalived_vrrp_interface_real,
|
||||||
virtual_ips => unique(split(join(flatten([$keepalived_public_ipvs_real, ['']]), " dev ${keepalived_public_interface_real},"), ',')),
|
virtual_ips => unique(split(join(flatten([$keepalived_public_ipvs_real, ['']]), " dev ${keepalived_public_interface_real},"), ',')),
|
||||||
state => $keepalived_state,
|
state => $keepalived_state,
|
||||||
track_script => ['haproxy'],
|
track_script => ['haproxy'],
|
||||||
@@ -281,8 +290,13 @@ class cloud::loadbalancer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if $keepalived_internal_ipvs {
|
if $keepalived_internal_ipvs {
|
||||||
|
if ! $keepalived_vrrp_interface {
|
||||||
|
$keepalived_vrrp_interface_internal = $keepalived_internal_interface
|
||||||
|
} else {
|
||||||
|
$keepalived_vrrp_interface_internal = $keepalived_vrrp_interface
|
||||||
|
}
|
||||||
keepalived::instance { '2':
|
keepalived::instance { '2':
|
||||||
interface => $keepalived_internal_interface,
|
interface => $keepalived_vrrp_interface_internal,
|
||||||
virtual_ips => unique(split(join(flatten([$keepalived_internal_ipvs, ['']]), " dev ${keepalived_internal_interface},"), ',')),
|
virtual_ips => unique(split(join(flatten([$keepalived_internal_ipvs, ['']]), " dev ${keepalived_internal_interface},"), ',')),
|
||||||
state => $keepalived_state,
|
state => $keepalived_state,
|
||||||
track_script => ['haproxy'],
|
track_script => ['haproxy'],
|
||||||
|
@@ -59,6 +59,7 @@ describe 'cloud::loadbalancer' do
|
|||||||
:haproxy_auth => 'root:secrete',
|
:haproxy_auth => 'root:secrete',
|
||||||
:keepalived_state => 'BACKUP',
|
:keepalived_state => 'BACKUP',
|
||||||
:keepalived_priority => 50,
|
:keepalived_priority => 50,
|
||||||
|
:keepalived_vrrp_interface => false,
|
||||||
:keepalived_public_interface => 'eth0',
|
:keepalived_public_interface => 'eth0',
|
||||||
:keepalived_public_ipvs => ['10.0.0.1', '10.0.0.2'],
|
:keepalived_public_ipvs => ['10.0.0.1', '10.0.0.2'],
|
||||||
:horizon_port => '80',
|
:horizon_port => '80',
|
||||||
@@ -137,6 +138,17 @@ describe 'cloud::loadbalancer' do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'configure keepalived vrrp on dedicated interface' do
|
||||||
|
before do
|
||||||
|
params.merge!(:keepalived_vrrp_interface => 'eth2')
|
||||||
|
end
|
||||||
|
it 'configure keepalived with a dedicated interface for vrrp' do
|
||||||
|
should contain_keepalived__instance('1').with({
|
||||||
|
'interface' => 'eth2',
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context 'when keepalived and HAproxy are in backup' do
|
context 'when keepalived and HAproxy are in backup' do
|
||||||
it 'configure vrrp_instance with BACKUP state' do
|
it 'configure vrrp_instance with BACKUP state' do
|
||||||
should contain_keepalived__instance('1').with({
|
should contain_keepalived__instance('1').with({
|
||||||
|
Reference in New Issue
Block a user