1.keepalived是什么?
keepalived是集群管理中保障集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障
2.keepalived 工作原理
keepalived是以**VRRP**协议为实现基础的,VRRP全称Virtual Route Redundancy Protocol,即**虚拟路由冗余协议** 虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
**将N台提供相同功能的服务器组成一个服务器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该服务器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master** keepalived主要有三个模块,分别是**core、check(后端web服务器的检查)和vrrp**。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。
思路:
1.设置rs(web1和web2)的配置 安装vip:10.18.43.73 lo
为了让vip发包出去
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
忽略arp响应
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
2.dr_1 dr_2
两块网卡 两台机器上的两块网卡名称必须一样
路由条目的顺序必须一样 区分谁当dip
谁的路由条目在上面 谁当dip dip要固定下来 20 21 ens33
3.安装ipvsadm
安装:
一:准备工作:
10.18.43.86 client
10.18.43.87 nginx_dr1
10.18.43.79 nginx_dr2
10.18.43.88 web1
10.18.43.89 web2
把五台机器都作:
1.关闭防火墙设置开机不启动:
# chkconfig firewalld off
#systemctl stop firewalld
2.关闭SElinux
# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# setenforce 0
3.dr1和dr2下载keepalived
#yum -y install keepalived
二。设置:
1.nginx_dr1
修改配置文件:
# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id Director1 //两边是一样的 #备份调度器的主机名 名字一样就可以
}
vrrp_instance VI_1 {
state MASTER //另外一台机器是BACKUP
interface eth0 //心跳网卡 最好是赵一块独立的网卡作心跳网卡
virtual_router_id 51 // 虚拟路由的ID一定要和集群内的其他主机相同
priority 150 //优先级 比主调度器低一些,最少差五十
advert_int 1 //检查间隔,单位秒
authentication {
auth_type PASS
auth_pass 1111 密钥需要和集群内的主服务器相同
}
virtual_ipaddress {
10.18.43.73/24 dev eth1
}
}
virtual_server 10.18.43.73 80 { //vip
delay_loop 3 //服务论询的时间间隔
lb_algo rr //LVS 调度算法
lb_kind DR // LVS 集群模式
protocol TCP
real_server 10.18.43.88 80 { //web1
weight 1
TCP_CHECK {
connect_timeout 3
}
}
real_server 10.18.43.89 80 { //web2
weight 1
TCP_CHECK {
connect_timeout 3
}
}
}
保存退出
```
2.拷贝master上的keepalived.conf到backup上:
#scp keepalived.conf 10.18.43.79:/etc/keepalived/
3.nginx_dr2
state BACKUP
priority 100
4.web1 和 web2
vip:10.18.43.73 lo
为了让vip发包出去
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
忽略arp响应
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
5.两个Director上启动服务:
nginx_dr2
# service keepalived start
rhel7:
# systemctl start keepalived
6.测试:
1)观察lvs路由条目
2)观察vip地址在哪台机器上
3)客户端浏览器访问vip
4)关闭master上的keepalived服务,再次访问vip