BenjaminYang In solitude, where we are least alone

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并未飘过来、符合预期,不抢占哦- 、-
posted @ 2019-01-17 18:27  benjamin杨  阅读(1875)  评论(2编辑  收藏  举报