Linux-利用keepalived实现lvs的高可用性
Posted orochwang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux-利用keepalived实现lvs的高可用性相关的知识,希望对你有一定的参考价值。
单主模型IPVS示例
配置keepalive
高可用的ipvs集群示例:修改keepalived配置文件
修改主机:192.168.234.27的keepalived配置文件
1 [[email protected] ~]# vim /etc/keepalived/keepalived.conf 2 ! Configuration File for keepalived 3 4 global_defs { 5 notification_email { 6 [email protected] //接受邮件地址 7 } 8 notification_email_from [email protected] //发送邮件地址 9 smtp_server 127.0.0.1 //发送邮件服务器IP 10 smtp_connect_timeout 30 //邮件连接超时时长 11 router_id kptwo //路由id 12 vrrp _mcast_group4 234.10.10.10 //指定vrrp协议的多播地址 13 } 14 15 vrrp_instance VI_1 { //vrrp协议的 16 state MASTER //lvs的MASTER服务器 17 interface ens37 // 18 virtual_router_id 50 //虚拟路由 19 priority 100 //权重为100.越大越先 20 advert_int 1 //发送组博包的间隔 21 authentication { //验证 22 auth_type PASS //方式为pass( 明文) 23 auth_pass 1111 //密码 24 } 25 virtual_ipaddress { //keepalived虚拟ip 26 10.0.0.100/24 27 } 28 } 29 virtual_server 10.0.0.100 80 { 30 delay_loop 6 //检查后端服务器的时间间隔 31 lb_algo wrr //定义调度方法 32 lb_kind DR //集群的类型 33 #persistence_timeout 50 //持久连接时长 34 protocol TCP //服务协议,仅支持TCP 35 real_server 192.168.234.47 80 { //后端real_server服务器地址 36 weight 1 //权重 37 HTTP_GET { //应用层检测 38 url { 39 path / //定义要监控的URL 40 status_code 200 //判断上述检测机制为健康状态的响应码 41 } 42 connect_timeout 3 //连接请求的超时时长 43 nb_get_retry 3 //重试次数 44 delay_before_retry 3 //重试之前的延迟时长 45 } 46 } 47 real_server 192.168.234.57 80 { 48 weight 2 49 HTTP_GET { 50 url { 51 path / 52 status_code 200 53 } 54 connect_timeout 3 55 nb_get_retry 3 56 delay_before_retry 3 57 } 58 } 59 }
修改主机:192.168.234.37的keepalived配置文件
[[email protected] ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs { notification_email { [email protected] } notification_email_from [email protected] smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id kptwo vrrp _mcast_group4 234.10.10.10 } vrrp_instance VI_1 { state BACKUP interface ens37 virtual_router_id 50 priority 80 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.100/24 } } virtual_server 10.0.0.100 80 { delay_loop 6 lb_algo wrr lb_kind DR #persistence_timeout 50 protocol TCP sorry_server 127.0.0.1:80 real_server 192.168.234.47 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 192.168.234.57 80 { weight 2 HTTP_GET { url { path / status_code 200 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }
查看keepalived
[[email protected] ~]# systemctl status keepalived ● keepalived.service - LVS and VRRP High Availability Monitor Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled) Active: inactive (dead) ………… [[email protected] ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn //暂无ipvsadm
启动服务
[[email protected] keepalived]# systemctl start keepalived.service [[email protected] keepalived]# systemctl status keepalived.service ● keepalived.service - LVS and VRRP High Availability Monitor Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2018-08-31 20:30:02 CST; 12s ago Process: 9657 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS) Main PID: 9658 (keepalived) ……………… [[email protected] keepalived]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.0.0.100:80 wrr -> 192.168.234.47:80 Route 1 0 0 -> 192.168.234.57:80 Route 2 0 0 //启动服务lvs vs已配置好
后端real_server准备
增加ip在网卡上 修改限制arp通告及应答级别 rs1 rs2都做,网关并指向路由
ip a a 10.0.0.100/32 dev ens37 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
route add default gw 192.168.234.17
安装httpd服务 写好网页文件
启动服务
多主模型IPVS示例
配置keepalive
高可用的ipvs集群示例:修改keepalived配置文件
修改主机:192.168.234.27的keepalived配置文件
[[email protected] keepalived]# vim /etc/keepalived/keepalived.conf global_defs { notification_email { [email protected] } notification_email_from [email protected] smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id kpone vrrp _mcast_group4 234.10.10.10 } vrrp_instance VI_1 { state MASTER interface ens37 virtual_router_id 50 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.100/24 } } vrrp_instance VI_2 { state BACKUP interface ens37 virtual_router_id 51 priority 80 advert_int 1 authentication { auth_type PASS auth_pass 2222 } virtual_ipaddress { 10.0.0.200/24 } } virtual_server 10.0.0.100 80 { delay_loop 6 lb_algo wrr lb_kind DR #persistence_timeout 50 protocol TCP #sorry_server 127.0.0.1:80 real_server 192.168.234.47 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } } virtual_server 10.0.0.200 80 { delay_loop 6 lb_algo wrr lb_kind DR #persistence_timeout 50 protocol TCP #sorry_server 127.0.0.1:80 real_server 192.168.234.57 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }
修改主机:192.168.234.37的keepalived配置文件
[[email protected] ~]# vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { notification_email { [email protected] } notification_email_from [email protected] smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id kptwo vrrp _mcast_group4 234.10.10.10 } vrrp_instance VI_1 { state BACKUP interface ens37 virtual_router_id 50 priority 80 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.100/24 } } vrrp_instance VI_2 { state MASTER interface ens37 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 2222 } virtual_ipaddress { 10.0.0.200/24 } } virtual_server 10.0.0.100 80 { delay_loop 6 lb_algo wrr lb_kind DR #persistence_timeout 50 protocol TCP #sorry_server 127.0.0.1:80 real_server 192.168.234.47 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } } virtual_server 10.0.0.200 80 { delay_loop 6 lb_algo wrr lb_kind DR #persistence_timeout 50 protocol TCP #sorry_server 127.0.0.1:80 real_server 192.168.234.57 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }
让10.0.0.100的ip优先分配至192.168.234.47 192.168.234.57备用
让10.0.0.200的ip优先分配至192.168.234.57 192.168.234.47备用
后端real_server准备
修改192.168.234.57的vip为10.0.0.200/32
1 [[email protected] keepalived]# ipvsadm -Ln 2 IP Virtual Server version 1.2.1 (size=4096) 3 Prot LocalAddress:Port Scheduler Flags 4 -> RemoteAddress:Port Forward Weight ActiveConn InActConn 5 TCP 10.0.0.100:80 wrr 6 -> 192.168.234.47:80 Route 1 0 0 7 TCP 10.0.0.200:80 wrr 8 -> 192.168.234.57:80 Route 1 0 0
现在宕掉一个lvs
1 [[email protected] keepalived]# systemctl stop keepalived.service 2 [[email protected] keepalived]# ipvsadm -Ln 3 IP Virtual Server version 1.2.1 (size=4096) 4 Prot LocalAddress:Port Scheduler Flags 5 -> RemoteAddress:Port Forward Weight ActiveConn InActConn 6
依然提供服务
1 [[email protected] ~]# ipvsadm -Ln 2 IP Virtual Server version 1.2.1 (size=4096) 3 Prot LocalAddress:Port Scheduler Flags 4 -> RemoteAddress:Port Forward Weight ActiveConn InActConn 5 TCP 10.0.0.100:80 wrr 6 -> 192.168.234.47:80 Route 1 0 21 7 TCP 10.0.0.200:80 wrr 8 -> 192.168.234.57:80 Route 1 0 39
后一个实现基于前一个的基础上修改来的
假设要实现sorry_server
1.把rs服务都停掉。然后在lvs上安装apache或者nginx服务
2.将keepalived配置文件中的
1 virtual_server 10.0.0.200 80 { 2 delay_loop 6 3 lb_algo wrr 4 lb_kind DR 5 #persistence_timeout 50 6 protocol TCP 7 #sorry_server 127.0.0.1:80 //这一行来修改 写出服务出错之后的页面 8 real_server 192.168.234.57 80 { 9 weight 1 10 HTTP_GET { 11 url { 12 path / 13 status_code 200 14 } 15 connect_timeout 3 16 nb_get_retry 3 17 delay_before_retry 3 18 } 19 } 20 }
以上是关于Linux-利用keepalived实现lvs的高可用性的主要内容,如果未能解决你的问题,请参考以下文章