一共需要四台虚拟服务器,两台主备LVS,两台装nginx
一,安装LVS + Keepalived
1. 两台虚拟机安装ipvsadm
yum -y install ipvsadm
2.两台虚拟机安装Keepalived并配置
2.1 Keepalived安装看下面文章
https://www.cnblogs.com/hardy-wang/p/13827240.html
2.2 配置 MASTER Keeplived
打开keeplived 配置文件
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
# 路由id: 当前安装keepalived节点主机的标识符,全局唯一
router_id LVS_DEVEL_132
}
# 计算机节点
vrrp_instance VI_1 {
# 表示的状态,当前的128位nginx的主机点,MASTER/BACKUP
state MASTER
# 当前实例绑定的网卡
interface ens33
# 保证主备节点一致
virtual_router_id 41
# 优先级/权重,谁的优先级高,在MASTER挂掉以后,就成为MASTER
priority 100
# 主备之间同步检查的时间间隔,默认1s
advert_int 1
# 认证密码,防止非法节点的进入
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟ip
virtual_ipaddress {
192.168.174.100
}
}
#配置集群地址访问的IP+端口,端口和nginx保持一致,都是80
virtual_server 192.168.174.100 80 {
# 健康检查时间,单位:秒
delay_loop 6
# 配置负载均衡的算法,默认是轮训
lb_algo rr
# 设备LVS的模式 NAT|TUN|DR
lb_kind DR
# 设置会话持久化的事件
persistence_timeout 5
# 协议 -t
protocol TCP
#负载均衡的真实服务器,也就是nginx节点的具体的真实ip地址
real_server 192.168.174.128 80 {
# 轮询的默认权重配比设置为1
weight 1
# 设置健康时间
TCP_CHECK{
# 检查的80端口
connect_port 80
# 超时时间
connect_timeout 2
# 重试次数
retry 2
# 间隔时间
delay_before_retry 3
}
}
#负载均衡的真实服务器,也就是nginx节点的具体的真实ip地址
real_server 192.168.174.131 80 {
# 轮询的默认权重配比设置为1
weight 1
# 设置健康时间
TCP_CHECK{
# 检查的80端口
connect_port 80
# 超时时间
connect_timeout 2
# 重试次数
retry 2
# 间隔时间
delay_before_retry 3
}
}
}
2.2 配置 BACKUP Keeplived
! Configuration File for keepalived
global_defs {
# 路由id: 当前安装keepalived节点主机的标识符,全局唯一
router_id LVS_DEVEL_133
}
# 计算机节点
vrrp_instance VI_1 {
# 表示的状态,当前的128位nginx的主机点,MASTER/BACKUP
state BACKUP
# 当前实例绑定的网卡
interface ens33
# 保证主备节点一致
virtual_router_id 41
# 优先级/权重,谁的优先级高,在MASTER挂掉以后,就成为MASTER
priority 50
# 主备之间同步检查的时间间隔,默认1s
advert_int 1
# 认证密码,防止非法节点的进入
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟ip
virtual_ipaddress {
192.168.174.100
}
}
#配置集群地址访问的IP+端口,端口和nginx保持一致,都是80
virtual_server 192.168.174.100 80 {
# 健康检查时间,单位:秒
delay_loop 6
# 配置负载均衡的算法,默认是轮训
lb_algo rr
# 设备LVS的模式 NAT|TUN|DR
lb_kind DR
# 设置会话持久化的事件
persistence_timeout 5
# 协议 -t
protocol TCP
#负载均衡的真实服务器,也就是nginx节点的具体的真实ip地址
real_server 192.168.174.128 80 {
# 轮询的默认权重配比设置为1
weight 1
# 设置健康时间
TCP_CHECK{
# 检查的80端口
connect_port 80
# 超时时间
connect_timeout 2
# 重试次数
retry 2
# 间隔时间
delay_before_retry 3
}
}
#负载均衡的真实服务器,也就是nginx节点的具体的真实ip地址
real_server 192.168.174.131 80 {
# 轮询的默认权重配比设置为1
weight 1
# 设置健康时间
TCP_CHECK{
# 检查的80端口
connect_port 80
# 超时时间
connect_timeout 2
# 重试次数
retry 2
# 间隔时间
delay_before_retry 3
}
}
}
3.启动两台lvs机器的keepalived
./keepalived
或
systemctl start keepalived.service
4.查看网络
ip addr
二,安装Nginx并且配置网络lo
1.安装nginx,下面文章
https://www.cnblogs.com/hardy-wang/p/13819305.html
2.为两台nginx server配置虚ip
2.1 打开网络配置目录
cd /etc/sysconfig/network-scripts/
2.2 复制lo文件并修改
cp ifcfg-lo ifcfg-lo:1
修改ifcfg-lo:1文件
DEVICE=lo:1
IPADDR=192.168.174.100
NETMASK=255.255.255.255
NETWORK=127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback
2.3 运行命令
ifup lo
或
service network restart
2.4 运行 ip addr 查看
3.为两台机器配置arp
ARP响应级别与通告行为 的概念
1. arp-ignore:ARP响应级别(处理请求)
0:只要本机配置了ip,就能响应请求
1:请求的目标地址到达对应的网络接口,才会响应请求
2. arp-announce:ARP通告行为(返回响应)
0:本机上任何网络接口都向外通告,所有的网卡都能接受到通告
1:尽可能避免本网卡与不匹配的目标进行通告
2:只在本网卡通告
3.1 打开sysctl.conf
vim /etc/sysctl.conf
3.2 配置 所有网卡 、 默认网卡 以及 虚拟网卡 的arp响应级别和通告行为,分别对应: all , default , lo :
# configration for lvs
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
3.3 刷新
sysctl -p
3.4 增加一个网关,用于接收数据报文,当有请求到本机后,会交给lo去处理:
route add -host 192.168.1.150 dev lo:1
3.5 查看
route -n
3.6 由于上面的方式重启下网关就没了,需要添加到rc.local
echo "route add -host 192. 168.1.150 dev lo:1" >> /etc/rc.local