centos7:Lvs+keepalived安装部署

Lvs+keepalived安装部署

1.Keepalived的设计目标是构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器、管理服务器池,而不仅仅是双机热备。优点:keepalived对lvs负载调度器实现热备切换,提高可用性,对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入。

2.基于lvs+keepalived实现的lvs群集结构中,至少包含两台热备的负载调度器。使用keepalived构建lvs群集时,也需要用到ipvsadm管理工具,但是大部分工作会由keepalived自动完成,不需要手动执行ipvsadm(除了查看和监控群集以外)。

3.LVS群集是针对Linux内核开发的一个负载均衡项目,基于IP地址虚拟化应用VIP,为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决办法。可使用ipvsadm管理工具。通过整合多台相对廉价的普通服务器,以同一个地址对外提供相同的服务。

4.负载均衡的直接路由工作模式。简称DR工作模式,负载调度器仅作为客户机的访问入口,各节点服务器与调度器位于同一个物理网络,节点服务器直接回应客户机的请求,而不再经过负载调度器。

5.Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检查(Health Checking)功能–判断LVS负载调度器,节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入集群

6.keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式
配置信息

7.vrrp:虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

Master:192.168.176.138
Backup:192.168.176.139
Vip:192.168.176.100

1.安装服务

//两台都需要安装
yum -y install ipvsadm keepalived 
yum -y install httpd

2.配置脚本

[root@138 ~]# vim lvs.sh 
[root@138 ~]# cat lvs.sh 
#!/bin/bash
vip=192.168.176.100
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip dev lo:0
//在真实服务器上对arp_ignore和arp_announce参数进行配置,主要是实现禁止响应对VIP的ARP请求(修改内核参数)
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1

//arp_ignore:定义对目标地址为本地IP的ARP询问不同的应答模式0 
//0 - (默认值): 回应任何网络接口上对任何本地IP地址的arp查询请求 
//1 - 只回答目标IP地址是来访网络接口本地地址的ARP查询请求 
//2 -只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内 
//3 - 不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应 
//4-7 - 保留未使用 
//8 -不回应所有(本地地址)的arp查询

//arp_announce:对网络接口上,本地IP地址的发出的,ARP回应,作出相应级别的限制: 确定不同程度的限制,宣布对来自本地源IP地址发出Arp请求的接口 
//0 - (默认) 在任意网络接口(eth0,eth1,lo)上的任何本地地址 
//1 -尽量避免不在该网络接口子网段的本地地址做出arp回应. 当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用.此时会检查来访IP是否为所有接口上的子网段内ip之一.如果改来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理. 
//2 - 对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址. 如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送.

[root@138 ~]# sh lvs.sh 
lvs.sh:3: ifconfig: 未找到命令
lvs.sh:4: route: 未找到命令   ###因为最小化所以需要安装net-tools
[root@138 ~]# yum -y install net-tools
[root@138 ~]# sh lvs.sh 
[root@138 ~]# scp lvs.sh 192.168.176.139:/root/
[root@139 ~]# ls
anaconda-ks.cfg  lvs.sh
[root@139 ~]# sh lvs.sh

//ip a查看
[root@139 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 192.168.176.100/32 brd 192.168.176.100 scope global lo:0
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:63:45:5f brd ff:ff:ff:ff:ff:ff
    inet 192.168.176.139/24 brd 192.168.176.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::8fe4:3a26:c12a:47ab/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

3.修改keepalived配置文件

主节点(master)配置文件

[root@138 ~]# vim /etc/keepalived/keepalived.conf 
[root@138 ~]# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived

global_defs {
   router_id LVS_DEVEL   # 路由器标识
}

vrrp_instance VI_1 {     # 一个vrrp_instance就是定义一个虚拟路由器的,实例名称
    state MASTER    # 定义初始状态,可以是MASTER或者BACKUP
    interface ens33    # 工作接口
    virtual_router_id 51    # 虚拟路由IDID还是虚拟MAC最后一段地址的信息,取值范围0-255
    priority 100   # 如果你上面定义了MASTER,这里的优先级就需要定义的比其他的高
    advert_int 1    # 通告频率,单位为秒
    authentication {       # 通信认证机制,这里是明文认证还有一种是加密认证
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {     # 设置虚拟VIP地址,一般就设置一个,在LVS中这个就是为LVS主机设置VIP的,这样你就不用自己手动设置了
        192.168.176.100
    }
}
# 定义LVS集群服务,可以是IP+PORT;也可以是fwmark 数字,也就是防火墙规则
virtual_server 192.168.176.100 80 {
    delay_loop 6
    lb_algo rr   # 算法
    lb_kind DR   # LVS的模式
    persistence_timeout 0    # 持久连接超时时间
    protocol TCP     # 定义协议

     real_server 192.168.176.138 80 {    # 后端应用服务器 IP PORT
        weight 1    # 权重
        TCP_CHECK {   # MSIC_CHECK|SMTP_CHEKC|TCP_CHECK|SSL_GET|HTTP_GET这些都是针对应用服务器做健康检查的方法
            connect_timeout 3   # 连接超时时间
            nb_get_retry 3   # 尝试次数
            delay_before_retry 3   # 每次尝试之间间隔几秒
	        connect_port 80   # 向哪一个端口检查,如果不指定默认使用上面定义的端口
        } 
    }
    real_server 192.168.176.139 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}

从节点(backup)配置文件

//拷贝主节点的配置文件keepalived.conf:
[root@138 ~]# scp /etc/keepalived/keepalived.conf root@192.168.176.139:/etc/keepalived/keepalived.conf 
//把以下内容给修改
state MASTER -> state BACKUP
priority 100 -> priority 90

两个节点开启转发功能(两台)

 echo 1 > /proc/sys/net/ipv4/ip_forward

启动keepalived

systemctl start keepalived

4.重启日志记录服务(两台都要)

修改日志保存路径

vim /etc/sysconfig/keepalived
把KEEPALIVED_OPTIONS="-D" 修改为:KEEPALIVED_OPTIONS="-D -d -S 0"/etc/rsyslog.conf 末尾添加
local0.*                  /var/log/keepalived.log
重启日志服务
systemctl restart rsyslog
//查看日志是否启动成功
[root@138 ~]# tailf /var/log/keepalived.log
//查看是否正常
[root@138 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.176.100:80 rr
  -> 192.168.176.138:80           Route   1      0          0         
  -> 192.168.176.139:80           Route   1      0          1 

5.修改Apache页面

[root@138 ~]# vim /var/www/html/index.html
[root@138 ~]# cat /var/www/html/index.html 
<h1>lee1</h1>
[root@139 ~]# vim /var/www/html/index.html
[root@139 ~]# cat /var/www/html/index.html 
<h1>lee2</h1>

防火墙关闭

systemctl stop firewalld
setenforce 0

vip:192.168.176.100(访问页面)
centos7:Lvs+keepalived安装部署_第1张图片
centos7:Lvs+keepalived安装部署_第2张图片

//关闭keepalived,再测试页面
[root@139 ~]# systemctl stop keepalived

centos7:Lvs+keepalived安装部署_第3张图片
centos7:Lvs+keepalived安装部署_第4张图片

你可能感兴趣的:(LVS负载均衡,负载均衡,运维,centos,linux)