Keepalive+LVS高可用服务器搭建

keepalived: 三个功能(模块)

1.VRRP功能(重要):虚拟路由热备协议-----防止单点故障
VIP: 虚拟IP/浮动IP
#无轮询效果,仅热备
2.自动配置LVS(ipvsadm): 无需安装ipvsadm,直接与LVS交互
#还是需要安装ipvsadm: 用于查看配置后结果—ipvsadm -Ln
3.健康检查: 强于ipvsadm
#功能之间相互独立,可以单独使用

注意:
a)每次启动keepalived会自动启动防火墙iptables,并且拒绝所有
b)Keepalived错误日志路径:/var/log/messages

keepalived+LVS高可用

工作原理流程:
1).客户端发送请求给虚拟路由(VIP)192.168.4.15
2).根据两台proxy服务器的优先级判断,将请求转给优先级较高的proxy服务器-------Keepalived
3).proxy服务器根据修改后的配置文件自动生成LVS及相应后端web服务器权重,并以轮询的方式调度web服务器-------LVS
4).后端web服务器收到请求后,处理数据并伪装ip为VIP,即192.168.4.15,直接返回给客户端.

1.环境准备

1).配置ip: 客户端×1, LVS(proxy)服务器×2, web服务器×2,各虚拟机IP如下表
Keepalive+LVS高可用服务器搭建_第1张图片
2).配置两台web服务器: 安装apache并启动服务(启动80端口)

web1配置:

[root@web1 ~]# yum -y install httpd
[root@web1 ~]# echo "web1" > /var/www/html/index.html
[root@web1 ~]# systemctl restart httpd; systemctl enable httpd	

web2配置:将web1中"web1"改为"web2",其余完全相同

3).配置两台web服务器VIP:

web1配置:
a).添加虚拟网卡,设置VIP:

[root@web1 ~]# cd /etc/sysconfig/network-scripts/
[root@web1 ~]# cp ifcfg-lo{,:0}		#按ifcfg-lo为模板复制出虚拟网卡ifcfg-lo:0
[root@web1 ~]# vim ifcfg-lo:0		#修改为VIP,用于伪装为调度服务器(proxy),将数据发送回客户端
DEVICE=lo:0
IPADDR=192.168.4.15
NETMASK=255.255.255.255				#必须为32位,即4个255
NETWORK=192.168.4.15
BROADCAST=192.168.4.15
ONBOOT=yes
NAME=lo:0

b).修改内核参数配置文件,防止地址冲突:
作用: 若不进行ip隐藏设置,则一个网络中出现两个相同的ip(web1和proxy),会导致地址冲突

[root@web1 ~]# vim /etc/sysctl.conf
#手动写入如下4行内容
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
#1,2行表示:当有arp广播问谁是192.168.4.15时,本机忽略该ARP广播,不做任何回应
#3,4行表示:本机不要向外宣告自己的lo回环地址是192.168.4.15

c).重启网络服务(有可能无法正常启动,和版本有关)

[root@web1 ~]# systemctl stop NetworkManager		#若无法直接重启network则执行前两步,关闭NetworkManager
[root@web1 ~]# systemctl disable NetworkManager		#因为网卡由NetworkManager和network共同管理,关闭一个才可以启动
[root@web1 ~]# systemctl restart network
[root@web1 ~]# ifconfig
[root@web1 ~]# systemctl stop firewalld				#防火墙
[root@web1 ~]# setenforce 0							#selinux值

web2配置:配置与web1完全相同

2.两台proxy调度器配置:

1).安装Keepalived和ipvsadm软件:

web1配置:
注:安装ipvsadm原因:LVS在内核中,ipvsadm为工具,用于人机交互,

[root@proxy1 ~]# yum install -y keepalived
[root@proxy1 ~]# systemctl enable keepalived
[root@proxy1 ~]# yum install -y ipvsadm
[root@proxy1 ~]# ipvsadm -C				#清除多余LVS规则

web2配置:配置与web1完全相同

2).部署Keepalived实现LVS-DR模式调度器高可用:

web1配置:

[root@proxy1 ~]# vim /etc/keepalived/keepalived.conf
#设置全局定义块,定义邮件收,发件人,设置路由ID
global_defs {
  notification_email {
    [email protected]                #设置报警收件人邮箱
  }
  notification_email_from ka@localhost    #设置发件人
  smtp_server 127.0.0.1                #定义邮件服务器
  smtp_connect_timeout 30
  router_id  lvs1                        #设置路由ID号(实验需要修改)
}
#虚拟路由配置块,设置虚拟路由主从,网卡接口,VRID,优先级等
vrrp_instance VI_1 {
  state MASTER                             #主服务器为MASTER
  interface eth0                       #定义网络接口
  virtual_router_id 51                 #主辅VRID号必须一致
  priority 100                         #服务器优先级
  advert_int 1
  authentication {
    auth_type pass
    auth_pass 1111                      #主辅服务器密码必须一致
  }
  virtual_ipaddress {                   #配置VIP(实验需要修改)
192.168.4.15 
 }   
}
#虚拟路由配置块,最重要的部分,将keepalived和lvs结合
virtual_server 192.168.4.15 80 {           #设置ipvsadm的VIP规则(实验需要修改)
  delay_loop 6
  lb_algo wrr                              #设置LVS调度算法为加权轮询算法
  lb_kind DR                               #设置LVS的模式为DR(实验需要修改)
  #persistence_timeout 50                #(实验需要注释)
#注意这样的作用是保持连接,开启后,客户端在一定时间内始终访问相同服务器
  protocol TCP
  real_server 192.168.4.100 80 {         #设置后端web服务器真实IP(实验需要修改)
    weight 1                             #设置权重为1
    TCP_CHECK {                           #对后台real_server做健康检查(实验需要修改)
    connect_timeout 3
    nb_get_retry 3
    delay_before_retry 3
    }
  }
 real_server 192.168.4.200 80 {       #设置后端web服务器真实IP(实验需要修改)
    weight 2                          #设置权重为2
    TCP_CHECK {                       #对后台real_server做健康检查(实验需要修改)
    connect_timeout 3
    nb_get_retry 3
    delay_before_retry 3
    }
  }
}
#其余删掉

重启服务:
注意:在启动keepalived时,软件会自动添加drop防火墙规则,拒绝所有人访问,需要iptables -F

[root@proxy1 ~]# systemctl start keepalived
[root@proxy1 ~]# ipvsadm -Ln                     #查看LVS规则
[root@proxy1 ~]# ip a  s                          #查看VIP配置
[root@proxy1 ~]# iptables -F			#关闭防火墙	

proxy2配置:配置与proxy1不同之处:

...
router_id  lvs2		#随便起名,不同即可
...
state BACKUP		#热备份LVS服务器
priority 80			#优先级,默认100,越大越先启用(VIP漂移)
...

其余完全相同

重启服务:同proxy1

3.客户端测试:

客户端使用curl命令反复连接192.168.4.15,查看访问的页面是否会轮询到不同的后端真实服务器。

######################################################################################

你可能感兴趣的:(Keepalive+LVS高可用服务器搭建)