centos7 lvs+keepalived nat模式
1.架构图
3.地址规划
主机名
|
内网ip
|
外网ip
|
lvs-master
|
192.168.137.111(仅主机)eth1
|
172.16.76.111(桥接)eth0
|
lvs-slave
|
192.168.137.112(仅主机)eth1
|
172.16.76.112(桥接)eth0
|
realserver-01
|
192.168.137.21(仅主机)eth0
|
无
|
realserver-02
|
192.168.137.22(仅主机)eth0
|
无
|
内网vip/虚拟网关
|
192.168.137.254(vip)
|
无
|
外网vip
|
无
|
172.16.76.200(vip)
|
3.安装相关软件
在两个lvs主机上安装 keepalived 和 ipvsadm
yum install ipvsadm keepalived -y
两个realserver 都安装httpd服务,用于测试
yum install -y httpd
4.配置
4.1lvs-master的keepalived配置
! Configuration File for keepalived #全局定义 global_defs { notification_email { 13311802282@163.com #主备切换时候收邮件的地址,一行一个 342037867@qq.com } notification_email_from root #指定邮件的来源 smtp_server 127.0.0.1 #使用本地邮件服务器 smtp_connect_timeout 30 #指定邮件连接超时时间 router_id LVS_MASTER #指定router_id标识符 ,主备的可以相同,也可以不相同 } #虚拟路由组定义## vrrp_syncv_group aliyun { #定义一个虚拟路由组 group { inside_network outside_network } } #外网定义### vrrp_instance outside_network { state MASTER #指定那个为master,那个为backup,如果设置 #了nopreempt这个值不起作用,主备靠priority决定 interface eth0 #设置VIP的绑定网卡为eth0 nopreempt #非抢占(因为默认如果master挂的时候,backup会顶上,当master再好的时候,会再切回去,这样就会造成两次 ##断开,加上nopreempt的时候,及时master又好了,依旧不会切换,但是要注意两个state 都要是backup) track_interface { #定义额外的监听网卡,只要其中一个网卡出现故障就会发生主备切换 # eth1 eth1 } lvs_sync_daemon_inteface eth0 #设置lvs监听网卡 virtual_router_id 100 #设置虚拟路由ID号,同一组主备的ID号要一样 priority 100 #设置优先级,MASTER的优先级要比BACKUP的高 advert_int 1 #设置vrrp检测时间,默认为1S authentication { #设置认证信息,主备要一样 auth_type PASS #设置认证方式 auth_pass 1111 #设置认证密码 } virtual_ipaddress { 172.16.76.200/24 #设置外网VIP } } #内网定义### vrrp_instance inside_network { state MASTER nopreempt #非抢占(因为默认如果master挂的时候,backup会顶上,当master再好的时候,会再切回去,这样就会造成两次 #断开,加上nopreempt的时候,及时master又好了,依旧不会切换,但是要注意两个state 都要是backup) interface eth1 track_interface { eth0 # eth1 } lvs_sync_daemon_inteface eth0 virtual_router_id 50 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.137.254/24 #设置网关地址为内网VIP } } virtual_server 172.16.76.200 80{ #设置策略 vip+端口 delay_loop 6 #健康检查时间间隔 lb_algo rr #lvs调度算法rr|wrr|lc|wlc|lblc|sh|dh lb_kind NAT ##负载均衡转发规则NAT|DR|TUN nat_mask 255.255.255.0 #persistence_timeout 50 # 此处注释,不然在50s里面访问的都是同一台后端服务器 protocol TCP real_server 192.168.137.21 80 { #设置真实服务器IP+端口 weight 1 TCP_CHECK { connect_timeout 3 #连接超时时间 nb_get_retry 3 #重连次数 delay_before_retry 3 #重连间隔时间 connect_port 80 #健康检查的端口的端口 } } real_server 192.168.137.22 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } }
4.2lvs-slave的keepalived配置
! Configuration File for keepalived #全局定义 global_defs { notification_email { 13311802282@163.com #主备切换时候收邮件的地址,一行一个 342037867@qq.com } notification_email_from root #指定邮件的来源 smtp_server 127.0.0.1 #使用本地邮件服务器 smtp_connect_timeout 30 #指定邮件连接超时时间 router_id LVS_MASTER #指定router_id标识符 ,主备的可以相同,也可以不相同 } #虚拟路由组定义## vrrp_syncv_group aliyun { #定义一个虚拟路由组 group { inside_network outside_network } } #外网定义### vrrp_instance outside_network { state MASTER #指定那个为master,那个为backup,如果设置 #了nopreempt这个值不起作用,主备靠priority决定 interface eth0 #设置VIP的绑定网卡为eth1 nopreempt #非抢占(因为默认如果master挂的时候,backup会顶上,当master再好的时候,会再切回去,这样就会造成两次 ##断开,加上nopreempt的时候,及时master又好了,依旧不会切换,但是要注意两个state 都要是backup) track_interface { #定义额外的监听网卡,只要其中一个网卡出现故障就会发生主备切换 # eth1 eth1 } lvs_sync_daemon_inteface eth0 #设置lvs监听网卡 virtual_router_id 100 #设置虚拟路由ID号,同一组主备的ID号要一样 priority 99 #设置优先级,MASTER的优先级要比BACKUP的高,master 100 advert_int 1 #设置vrrp检测时间,默认为1S authentication { #设置认证信息,主备要一样 auth_type PASS #设置认证方式 auth_pass 1111 #设置认证密码 } virtual_ipaddress { 172.16.76.200/24 #设置外网VIP } } #内网定义### vrrp_instance inside_network { state MASTER nopreempt #非抢占(因为默认如果master挂的时候,backup会顶上,当master再好的时候,会再切回去,这样就会造成两次 #断开,加上nopreempt的时候,及时master又好了,依旧不会切换,但是要注意两个state 都要是backup) interface eth1 track_interface { eth0 # eth1 } lvs_sync_daemon_inteface eth0 virtual_router_id 50 priority 99 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.137.254/24 #设置网关地址为内网VIP } } virtual_server 172.16.76.200 80{ #设置策略 vip+端口 delay_loop 6 #健康检查时间间隔 lb_algo rr #lvs调度算法rr|wrr|lc|wlc|lblc|sh|dh lb_kind NAT ##负载均衡转发规则NAT|DR|TUN nat_mask 255.255.255.0 #persistence_timeout 50 # 此处注释,不然在50s里面访问的都是同一台后端服务器 protocol TCP real_server 192.168.137.21 80 { #设置真实服务器IP+端口 weight 1 TCP_CHECK { connect_timeout 3 #连接超时时间 nb_get_retry 3 #重连次数 delay_before_retry 3 #重连间隔时间 connect_port 80 #健康检查的端口的端口 } } real_server 192.168.137.22 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } }
4.3修改内核配置
两个lvs主机都开启路由转发功能,修改内核参数
/etc/sysctl.conf
net.ipv4.ip_forward = 1 #设置为“1”开启路由转发功能,“0”为关闭路由转发; net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1
加载配置
sysctl -p
4.4配置网卡(略)
注意:所有内网的网络接口 网关都配置成 虚拟网关 192.168.137.254
5.验证
5.1启动两个lvs的keepalived 服务
systemctl start keepalived
5.2.验证优先级
按照配置vip默认会落在lvs-master master的优先级大
5.3使用ipvsadm查看lvs的调度策略
rr 代表轮询 权重是 1 :1
5.4验证负载均衡策略
符合预期
5.5测试高可用
我们将master的keepalived服务停掉看是否发生vip飘移
发现vip已经跑到slave节点
5.6验证选出的新master节点负载均衡策略
5.7验证非抢占性配置
这时我们将master节点的lvs重新开启,发觉vip并未飘过来、符合预期,不抢占哦- 、-