在安装keepalived之前,我们先做好相应的准备,条件如下:
准备两台服务器,并安装nginx和tomcat:
(lb01)10.0.0.5/172.16.1.5
(lb02)10.0.0.6/172.16.1.6
- 配置并启动nginx和tomcat
nginx配置如下(lb01与lb02配置相同):[root@lb01 application]# vim /application/nginx/conf/nginx.conf http{ . . . upstream default{ server 172.16.1.5:8080; server 172.16.1.6:8080; } server { listen 80; server_name localhost; location / { proxy_pass http://default; } } }
启动nginx和tomcat[root@lb01 /]# /application/nginx/sbin/nginx [root@lb01 /]# /application/tomcat/bin/startup.sh
[root@lb02 /]# /application/nginx/sbin/nginx [root@lb02 /]# /application/tomcat/bin/startup.sh
-
访问测试(或者在浏览器访问)
[root@lb01 /]# curl 10.0.0.5
[root@lb02 /]# curl 10.0.0.6
-
安装keepalived服务(两个服务器都需要安装)
[root@lb01 tools]# yum install keepalived -y
[root@lb02 tools]# yum install keepalived -y
-
编写配置文件 (/etc/keepalived/keepalived.conf)
man keepalived.conf ---查看配置文件说明信息 配置文件结构: GLOBAL CONFIGURATION --- 全局配置(*) VRRPD CONFIGURATION --- vrrp配置(*) LVS CONFIGURATION --- LVS服务相关配置
配置文件说明:
global_defs # Block id { notification_email # 邮件服务(这里我们删掉不用) { admin@example1.com ... } # From: from address that will be in header notification_email_from admin@example.com smtp_server 127.0.0.1 # IP smtp_connect_timeout 30 # integer, seconds vrrp_mcast_group4 224.0.0.18 # 可选配置, vrrp组(基于ipv4), default 224.0.0.18(不写也是默认) vrrp_mcast_group6 ff02::12 # 可选配置, vrrp组(基于ipv6), default ff02::12 enable_traps # enable SNMP traps router_id my_hostname # 自定义router_id,属于高可用集群中的唯一识别ID } vrrp_instance group01 { #group1实例,主备名称保持一致 state BACKUP #定义实例中的状态描述(MASTER,BACKUP),仅仅是描述信息,并不具有实际效果 interface eth0 #设置主备服务器虚拟ip地址放置网卡位置 virtual_router_id 51 #group1实例ID标识,不同实例不同Id,主备相同 priority 100 #优先级,值越大就是越优先 MASTER最大 advert_int 1 #主备通讯时间间隔 authentication { #主备通过认证建立连接 auth_type PASS auth_pass 1111 } virtual_ipaddress { #定义主备服务器之间使用的虚IP地址信息 10.0.0.3/24 dev eth0 label eth0:1 #配置访问的虚拟IP,dev (设备),eth0(网卡),label eth0:1 (标签) } }
lb01配置:global_defs { router_id lb01_lvs ###不同之处 } vrrp_instance group01 { state BACKUP ###不同之处 interface eth0 virtual_router_id 51 priority 100 ###不同之处 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.3/24 dev eth0 label eth0:1 ########填写的IP不可被其他设备占用,与Nginx监听地址相同 } }
lb02配置:global_defs { router_id lb01_lvs ###不同之处 } vrrp_instance group01 { state MASTER ###不同之处 interface eth0 virtual_router_id 51 priority 150 ###不同之处 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.3/24 dev eth0 label eth0:1 ########填写的IP不可被其他设备占用,与Nginx监听地址相同 } }
-
重启Keepalived服务,并查看虚拟ip
[root@lb01 /]# /etc/init.d/keepalived start Starting keepalived: [ OK ] [root@lb01 /]# /etc/init.d/keepalived status keepalived (pid 3166) is running... [root@lb01 /]#
[root@lb02 /]# /etc/init.d/keepalived start Starting keepalived: [ OK ] [root@lb02 /]# /etc/init.d/keepalived status keepalived (pid 3166) is running... [root@lb02 /]#
#/etc/init.d/keepalived reload ---平滑重启
#查看虚拟IP生成情况
lb01:只有主服务上才有虚拟ip[root@lb01 application]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:93:A7:84 inet addr:10.0.0.5 Bcast:10.0.0.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe93:a784/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:15168 errors:0 dropped:0 overruns:0 frame:0 TX packets:7530 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:15786408 (15.0 MiB) TX bytes:812517 (793.4 KiB) eth0:1 Link encap:Ethernet HWaddr 00:0C:29:93:A7:84 ####虚拟Ip inet addr:10.0.0.3 Bcast:0.0.0.0 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 eth1 Link encap:Ethernet HWaddr 00:0C:29:93:A7:8E inet addr:172.16.1.5 Bcast:172.16.1.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe93:a78e/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:149257 errors:0 dropped:0 overruns:0 frame:0 TX packets:12240 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:214956814 (204.9 MiB) TX bytes:1040177 (1015.7 KiB) 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:77 errors:0 dropped:0 overruns:0 frame:0 TX packets:77 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:84530 (82.5 KiB) TX bytes:84530 (82.5 KiB)
lb02:[root@lb02 tools]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:0D:3A:D6 inet addr:10.0.0.6 Bcast:10.0.0.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe0d:3ad6/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:15018 errors:0 dropped:0 overruns:0 frame:0 TX packets:7232 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:15788051 (15.0 MiB) TX bytes:733236 (716.0 KiB) eth1 Link encap:Ethernet HWaddr 00:0C:29:0D:3A:E0 inet addr:172.16.1.6 Bcast:172.16.1.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe0d:3ae0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:149316 errors:0 dropped:0 overruns:0 frame:0 TX packets:13040 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:214999388 (205.0 MiB) TX bytes:1097047 (1.0 MiB) 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:40 errors:0 dropped:0 overruns:0 frame:0 TX packets:40 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:16504 (16.1 KiB) TX bytes:16504 (16.1 KiB)
-
测试高可用(直接访问虚拟IP)
正常情况下:
1.如果10.0.0.5宕机(关闭Keepalived或Nginx服务或直接关闭服务器):[root@lb01 application]# /etc/init.d/keepalived stop Stopping keepalived: [ OK ] [root@lb01 application]#
2.查看lb01的虚拟ip:(lb01中已经没有虚拟Ip:10.0.0.3)
[root@lb01 application]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:93:A7:84 inet addr:10.0.0.5 Bcast:10.0.0.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe93:a784/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:15896 errors:0 dropped:0 overruns:0 frame:0 TX packets:9320 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:15852411 (15.1 MiB) TX bytes:1029902 (1005.7 KiB) eth1 Link encap:Ethernet HWaddr 00:0C:29:93:A7:8E inet addr:172.16.1.5 Bcast:172.16.1.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe93:a78e/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:149324 errors:0 dropped:0 overruns:0 frame:0 TX packets:12282 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:215028145 (205.0 MiB) TX bytes:1044932 (1020.4 KiB) 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:117 errors:0 dropped:0 overruns:0 frame:0 TX packets:117 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:101034 (98.6 KiB) TX bytes:101034 (98.6 KiB)
3.查看lb02的虚拟ip:(出现虚拟IP:10.0.0.3)
[root@lb02 tools]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:0D:3A:D6 inet addr:10.0.0.6 Bcast:10.0.0.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe0d:3ad6/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:16453 errors:0 dropped:0 overruns:0 frame:0 TX packets:7697 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:15881978 (15.1 MiB) TX bytes:901447 (880.3 KiB) eth0:1 Link encap:Ethernet HWaddr 00:0C:29:0D:3A:D6 inet addr:10.0.0.3 Bcast:0.0.0.0 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 eth1 Link encap:Ethernet HWaddr 00:0C:29:0D:3A:E0 inet addr:172.16.1.6 Bcast:172.16.1.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe0d:3ae0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:149436 errors:0 dropped:0 overruns:0 frame:0 TX packets:13145 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:215096735 (205.1 MiB) TX bytes:1172566 (1.1 MiB) 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:88 errors:0 dropped:0 overruns:0 frame:0 TX packets:88 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:66156 (64.6 KiB) TX bytes:66156 (64.6 KiB)
这里keepalived的特点一下子就体现出来了,在高可用集群中或在高并发、高性能集群中,我们必须保证服务的灵活性,业务的可用性,因此很多服务需要替补,以防万一。当然,在本章博客中虚拟Ip:10.0.0.3需要注意一下,不要与其他已占用的ip冲突。
最后修改于 2020-01-06 11:24:40
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

