1、目的:
部署两台lvs调度器并利用keepalived实现主主模型,DNS添加两条A记录指向lvs调度器实现轮询,最终实现高可用负载均衡集群效果
2、拓扑规划:
3、配置实践
(1)同步所有机器时间
在每台机器实行ntp同步:
[root@localhost ~]# ntpdate 10.1.0.1 26 Oct 20:10:57 ntpdate[5533]: step time server 10.1.0.1 offset -32408.643564 sec
(2)先配置RS,在RS1和RS2中中设置相同的VIP,这里使用脚本来快速定义
RS的预配置脚本:
#!/bin/bash # vip=10.1.24.111 mask='255.255.255.255' case $1 in start) echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce ifconfig lo:0 $vip netmask $mask broadcast $vip up route add -host $vip dev lo:0 ;; stop) ifconfig lo:0 down echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce ;; *) echo "Usage $(basename $0) start|stop" exit 1 ;; esac
(3)查看IP已经正确配置:
RS1:
eth0:11 Link encap:Ethernet HWaddr 00:0C:29:7E:C0:90 inet addr:10.1.24.113 Bcast:10.1.255.255 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) lo:0 Link encap:Local Loopback inet addr:10.1.24.111 Mask:255.255.255.255 UP LOOPBACK RUNNING MTU:65536 Metric:1 lo:1 Link encap:Local Loopback inet addr:10.1.24.110 Mask:255.255.255.255 UP LOOPBACK RUNNING MTU:65536 Metric:1
RS2:
eth1:11 Link encap:Ethernet HWaddr 00:0C:29:00:E0:C5 inet addr:10.1.24.114 Bcast:10.1.255.255 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) lo:0 Link encap:Local Loopback inet addr:10.1.24.111 Mask:255.255.255.255 UP LOOPBACK RUNNING MTU:65536 Metric:1 lo:1 Link encap:Local Loopback inet addr:10.1.24.110 Mask:255.255.255.255 UP LOOPBACK RUNNING MTU:65536 Metric:1
(4)设置VS配置文件keepalived.conf
VS1:
[root@php ~]# cat /etc/keepalived/keepalived.conf [root@localhost keepalived]# cat /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { notification_email { root@localhost } notification_email_from keepalived@localhost smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id node1 vrrp_mcast_group4 224.0.24.111 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 24 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 571f97b2 } virtual_ipaddress { 10.1.24.111/16 dev eth0 label eth0:1 } } virtual_server 10.1.24.111 80 { delay_loop 3 lb_algo rr lb_kind DR protocol TCP sorry_server 127.0.0.1 80 real_server 10.1.24.114 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 1 nb_get_retry 3 delay_before_retry 1 } } real_server 10.1.24.113 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 1 nb_get_retry 3 delay_before_retry 1 } } } vrrp_instance VI_2 { state BACKUP interface eth0 virtual_router_id 25 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 571f97b2 } virtual_ipaddress { 10.1.24.110/16 dev eth0 label eth0:2 } } virtual_server 10.1.24.110 80 { delay_loop 3 lb_algo rr lb_kind DR protocol TCP sorry_server 127.0.0.1 80 real_server 10.1.24.114 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 1 nb_get_retry 3 delay_before_retry 1 } } real_server 10.1.24.113 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 1 nb_get_retry 3 delay_before_retry 1 } } }
VS2:
[root@php ~]# cat !$ cat /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { notification_email { root@localhost } notification_email_from keepalived@localhost smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id node2 vrrp_mcast_group4 224.0.24.111 } vrrp_instance VI_1 { state BACKUP interface eth1 virtual_router_id 24 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 571f97b2 } virtual_ipaddress { 10.1.24.111/16 dev eth1 label eth1:1 } } virtual_server 10.1.24.111 80 { delay_loop 3 lb_algo rr lb_kind DR protocol TCP sorry_server 127.0.0.1 80 real_server 10.1.24.114 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 1 nb_get_retry 3 delay_before_retry 1 } } real_server 10.1.24.113 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 1 nb_get_retry 3 delay_before_retry 1 } } } vrrp_instance VI_2 { state MASTER interface eth1 virtual_router_id 25 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 571f97b2 } virtual_ipaddress { 10.1.24.110/16 dev eth1 label eth1:2 } } virtual_server 10.1.24.110 80 { delay_loop 3 lb_algo rr lb_kind DR protocol TCP sorry_server 127.0.0.1 80 real_server 10.1.24.114 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 1 nb_get_retry 3 delay_before_retry 1 } } real_server 10.1.24.113 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 1 nb_get_retry 3 delay_before_retry 1 } } }
(5)只启动一个keepalived查看,两个IP都已经添加:
[root@localhost keepalived]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:DA:A5:4C inet addr:10.1.252.36 Bcast:10.1.255.255 Mask:255.255.0.0 inet6 addr: fe80::20c:29ff:feda:a54c/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:76726 errors:0 dropped:0 overruns:0 frame:0 TX packets:12744 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:6665499 (6.3 MiB) TX bytes:1217927 (1.1 MiB) eth0:1 Link encap:Ethernet HWaddr 00:0C:29:DA:A5:4C inet addr:10.1.24.111 Bcast:0.0.0.0 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 eth0:2 Link encap:Ethernet HWaddr 00:0C:29:DA:A5:4C inet addr:10.1.24.110 Bcast:0.0.0.0 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:381 errors:0 dropped:0 overruns:0 frame:0 TX packets:381 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:32271 (31.5 KiB) TX bytes:32271 (31.5 KiB)
(6)在客户机测试,依然成功:
[root@681 ~]# for i in `seq 10`;do curl 10.1.24.110;done RS2 RS1 RS2 RS1 RS2 RS1 RS2 RS1 RS2 RS1 [root@681 ~]# for i in `seq 10`;do curl 10.1.24.111;done RS1 RS2 RS1 RS2 RS1 RS2 RS1 RS2 RS1 RS2
(7)接下来把keepalived服务启动,并搭建一个DNS服务器,www.hill.com两条A记录分别指向10.1.24.110和10.1.24.111即可
配置DNS
(8)添加域
[root@localhost named]# tail -14 /etc/named.conf zone "hillboy.com" IN { type master; file "hillboy.zone"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
(9)添加RR:
[root@localhost named]# cat /var/named/hillboy.zone $TTL 86400 @ IN SOA ns.hillboy.com. admin.hillboy.com. ( 1015 1H 30M 1W 1D ) @ IN NS ns.hillboy.com. ns IN A 10.1.24.18 www IN A 10.1.24.111 www IN A 10.1.24.110
(10)访问测试,已然成功:
[root@681 ~]# for I in `seq 10`;do curl www.hill.com;done RS1 RS2 RS1 RS2 RS1 RS2 RS1 RS2 RS1 RS2
至此,DNS+keepalived+lvs实现高可用负载均衡集群的实验已然顺利结束,更多文章请关注我的博客。