in Host
vi playbook.yml
playbook.yml
---
- hosts: lvs
sudo: yes
tasks:
- name: install ipvsadm
yum: name=ipvsadm state=latest
- name: install keepalived
yum: name=keepalived state=latest
- name: start keepalived and enabled
service: name=keepalived state=started enabled=yes
- hosts: web
sudo: yes
tasks:
- name: install apache
yum: name=httpd state=latest
- name: start apace and enabled
service: name=httpd state=started enabled=yes
ansible-playbook -i hosts playbook.yml
Set up keepalived in lvs1
ssh lvs1
sudo vi /etc/keepalived/keepalived.conf
/etc/keepalived/keepalived.conf
vrrp_instance VI_1{
state MASTER
interface eth1
virtual_router_id 61
priority 101
advert_int 3
nopreempt
lvs_sync_daemon_interface eth1
unicast_peer {
192.168.43.62
}
virtual_ipaddress {
192.168.43.200 dev eth1
}
}
virtual_server_group lvs_test {
192.168.43.200 80
}
virtual_server group lvs_test {
lvs_sched rr
lvs_method DR
protocol TCP
virtualhost helth
real_server 192.168.43.63 80 {
weight 1
inhibit_on_failure
HTTP_GET {
connect_port 80
connect_timeout 5
}
}
real_server 192.168.43.64 80 {
weight 1
inhibit_on_failure
HTTP_GET {
connect_port 80
connect_timeout 5
}
}
}
sudo service keepalived restart
sudo ipvsadm -Ln
sudo ip -4 addr
sudo vi /etc/sysctl.conf
/etc/sysctl.conf
net.ipv4.ip_forward = 1
sudo sysctl -p
Set up keepalived in lvs2
ssh lvs2
sudo vi /etc/keepalived/keepalived.conf
/etc/keepalived/keepalived.conf
vrrp_instance VI_1{
state BACKUP
interface eth1
virtual_router_id 62
priority 100
advert_int 3
nopreempt
lvs_sync_daemon_interface eth1
unicast_peer {
192.168.43.61
}
virtual_ipaddress {
192.168.43.200 dev eth1
}
}
virtual_server_group lvs_test {
192.168.43.200 80
}
virtual_server group lvs_test {
lvs_sched rr
lvs_method DR
protocol TCP
virtualhost helth
real_server 192.168.43.63 80 {
weight 1
inhibit_on_failure
HTTP_GET {
connect_port 80
connect_timeout 5
}
}
real_server 192.168.43.64 80 {
weight 1
inhibit_on_failure
HTTP_GET {
connect_port 80
connect_timeout 5
}
}
}
sudo service keepalived restart
sudo ipvsadm -Ln
sudo ip -4 addr
sudo vi /etc/sysctl.conf
/etc/sysctl.conf
net.ipv4.ip_forward = 1
sudo sysctl -p
Set Up in web1
ssh web1
sudo vi /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.43.200
NETMASK=255.255.255.255
NETWORK=192.168.43.200
BROADCAST=192.168.43.200
ONBOOT=yes
NAME=loopback-dsr
sudo service network restart
sudo ip -4 addr
sudo vi /etc/sysctl.conf
Add parameter
/etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
sudo sysctl -p
- app_ignoreを有効
- loからARPリクエストを受け取ったとき、loに設定されているアドレスの情報だけを返す
- arp_announceを有効
- loからARPリクエストを送信するとき、ARPリクエストの送信元アドレスとして、loに設定されたアドレスを使うようにする
Set Up in web2
ssh web2
sudo vi /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.43.200
NETMASK=255.255.255.255
NETWORK=192.168.43.200
BROADCAST=192.168.43.200
ONBOOT=yes
NAME=loopback-dsr
sudo service network restart
sudo ip -4 addr
sudo vi /etc/sysctl.conf
Add parameter
/etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
sudo sysctl -p