Keepalived+LVS_DR+NGINX
主机以CentOs7 为例子:
四台机器为列:
192.168.1.101 (keepalived+LVS)MASTER
192.168.1.102 (keepalived+LVS)BUCKER
192.168.1.103 nginx
192.168.1.104 nginx
192.168.1.120 VIP
01: 安装keepalived前需要安装的依赖:
yum -y install libnl libnl-devel
yum install -y libnfnetlink-devel
yum -y install openssl-devel
yum install wget
yum install gcc
yum install pcre
yum install openssl
yum install zlib
2: 安装ipvsadm (先安装ipvsadm 再安装keepalived)
3: 安装keepalived:
1 切换到/usr/local/src 下
2 http://www.keepalived.org/software/keepalived-1.3.4.tar.gz (wget 安装)
3 解压缩 tar -zxvf keepalived-1.3.4.tar.gz
4 指定安装目录(/usr/local)下 cd keepalieved-1.3.4 && ./configure –prefix=/usr/local/keepalived-1.3.4
5 编译安装 make && make install
6 cd /etc/ && mkdir keepalived (创建目录 因为keepalived执行的时候会去etc/keepalived/ 下 找keepalived.conf文件 来读取配置信息从而启动),
创建好目录后复制keepalived安装目录下的etc/keepalived/keepalived.conf 到系统根目录 /etc/keepalived/ 目录下 (以后修改keeepalived配置直接修改系统根目录下/etc/keepalived/keepalived.conf 即可)
4: keepalived master 与 bucker的安装方法一致, 最大不同的是 配置文件中vrrp_instance 中 state 一个为master 另一个为bucker ,priority 的值master 一定要大于bucker
5: 2台 nginx 主机的配置:
设置回环IP :
1: ifconfig lo:0 192.168.1.120 broadcast 192.168.1.120 netmask 255.255.255.255 up;
2: route add -host $VIP dev lo:1
3: 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
配置完毕后查看nginx主机的回环IP 命令: ifconfig
Keepalived 配置文件简介
! Configuration File for keepalived
global_defs { #全局定义部分
notification_email { #设置报警邮件地址,可设置多个
root@localhost #接收通知的邮件地址
# failover@firewall.loc
# sysadmin@firewall.loc
}
notification_email_from root@localhost #设置 发送邮件通知的地址
smtp_server localhost #设置 smtp server 地址,可是ip或域名.可选端口
smtp_connect_timeout 30 #设置 连接 smtp server的超时时间
router_id LVS_DEVEL1 #主机标识,用于邮件通知
#vrrp_skip_check_adv_addr
vrrp_strict #严格执行VRRP协议规范,此模式不支持节点单播
#vrrp_garp_interval 0
#vrrp_gna_interval 0
}
vrrp_script chk_nginx_service { #VRRP 脚本声明
script “/etc/keepalived/chk_nginx.sh” #周期性执行的脚本
interval 3 #运行脚本的间隔时间,秒
weight -20 #权重,priority值减去此值要小于备服务的priority值
fall 3 #检测几次失败才为失败,整数
rise 2 #检测几次状态为正常的,才确认正常,整数
user keepalived_script #执行脚本的用户或组
}
vrrp_instance VI_1 { #vrrp 实例部分定义,VI_1自定义名称
state MASTER #指定 keepalived 的角色,必须大写 可选值:MASTER|BACKUP
interface ens33 #网卡设置,lvs需要绑定在网卡上,realserver绑定在回环口。区别:lvs对访问为外,realserver为内不易暴露本机信息
virtual_router_id 51 #虚拟路由标识,是一个数字,同一个vrrp 实例使用唯一的标识,MASTER和BACKUP 的 同一个 vrrp_instance 下 这个标识必须保持一致
priority 100 #定义优先级,数字越大,优先级越高。
advert_int 1 #设定 MASTER 与 BACKUP 负载均衡之间同步检查的时间间隔,单位为秒,两个节点设置必须一样
authentication { #设置验证类型和密码,两个节点必须一致
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个
192.168.1.120
}
}
virtual_server 192.168.1.120 80 { #定义RealServer对应的VIP及服务端口,IP和端口之间用空格隔开
delay_loop 6 #每隔6秒查询realserver状态
lb_algo rr #后端调试算法(load balancing algorithm)
lb_kind DR #LVS调度类型NAT/DR/TUN
persistence_timeout 60 同一IP的连接60秒内被分配到同一台realserver
protocol TCP #用TCP协议检查realserver状态
real_server 192.168.1.114 80 { # 此IP为nginx 服务器真实ip
weight 1 #权重,最大越高,lvs就越优先访问
TCP_CHECK { #keepalived的健康检查方式HTTP_GET | SSL_GET | TCP_CHECK | SMTP_CHECK | MISC
connect_timeout 3 #3 秒无响应超时
delay_before_retry 3 #重连间隔时间
connect_port 80 #健康检查realserver的端口
}
}
real_server 192.168.1.113 80 { # 第二台nginx
weight 1
TCP_CHECK {
connect_timeout 3
delay_before_retry 3
connect_port 80
}
}
}
配置完成后 启动keepalived
启动程序在keepalived 安装目录sbin/ 下的 keepalived 启动: ./keepalived
查看启动进程: ps -ef |grep keepalived 会有三个进程 表示启动成功!
查看日志:tail -f /var/log/messages
查看是否生成了vip : ip add
查看LVS 路由是否检测到2台nginx : ipvsadm -Ln
注:
1 禁用防火墙
[root@centos06 ~]# systemctl stop firewalld.service
[root@centos06 ~]#systemctl disable firewalld.service
[root@centos06 ~]#systemctl status firewalld.service (查看关闭状态)
[yellow@centos06 ~]$ systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
关闭防火墙之后,就正常了
2 重启网卡: /etc/init.d/network restart 重启网卡
3 把vip绑定在lo上,是为了实现rs直接把结果返回给客户端
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
4 以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
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