在两台机器上安装keepalived:
yum install -y keepalived
keepalived+nginx实现web高可用:
vip:虚拟ip,当master宕机后,vip被分配到backup上。
编辑160主机的keepalived配置文件:
vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
aming@aminglinux.com
}
notification_email_from root@aminglinux.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_nginx {
script "/usr/local/sbin/check_ng.sh"
interval 3
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass aminglinux>com
}
virtual_ipaddress {
192.168.247.180
}
track_script {
chk_nginx
}
}
定义监控nginx服务的脚本,如下:
vim /usr/local/sbin/check_ng.sh
#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
/etc/init.d/nginx start
n2=`ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0" ]; then
echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
systemctl stop keepalived
fi
fi
增加权限:
chmod a+x /usr/local/sbin/check_ng.sh
启动:
systemctl start keepalived
接下来配置backup:
vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
aming@aminglinux.com
}
notification_email_from root@aminglinux.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_nginx {
script "/usr/local/sbin/check_ng.sh"
interval 3
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass aminglinux>com
}
virtual_ipaddress {
192.168.247.180
}
track_script {
chk_nginx
}
}
配置监控脚本:
vim /usr/local/sbin/check_ng.sh
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
systemctl start nginx
n2=`ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0" ]; then
echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
systemctl stop keepalived
fi
fi
增加权限:
chmod a+x /usr/local/sbin/check_ng.sh
启动keepalived:
systemctl start keepalived
搭建负载均衡集群:
lvs:主要分为三种类型:nat,ip隧道,dr
lvs的调度算法:
1.轮询调度:
按顺序把请求一次发送给后端的服务器
2.带权重的轮询调度:
权重越高的服务器被分配到的请求就越多
3.最小连接调度:
这种算法会根据各真实服务器上的连接数来决定把新的请求分配给谁
4.带权重的最小连接调度:
可以认为的控制哪些服务器多分配请求
5。基于局部性的最小连接调度:
简称lblc,是针对请求报文的目标ip地址负责均衡调度
6.带复制的基于局部性最少链接调度:
lblcr,与lblc不同的是,它要维护从一个ip到一组服务器的映射
7.目标地址散列调度:
静态映射算法
8.源地址散列调度:
与目标地址散列调度相反
nat模式搭建lvs:
清空防火墙,并保存
在调度器上安装ipvsadm:
yum install -y ipvsadm
编写一个脚本:
vim /usr/local/sbin/lvs_nat.sh
#! /bin/bash
# director 服务器上开启路由转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
# 关闭icmp的重定向
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
# 注意区分网卡名字,阿铭的两个网卡分别为ens33和ens37
echo 0 > /proc/sys/net/ipv4/conf/ens33/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/ens37/send_redirects
# director 设置nat防火墙
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.188.0/24 -j MASQUERADE
# director设置ipvsadm
IPVSADM='/usr/sbin/ipvsadm'
$IPVSADM -C
$IPVSADM -A -t 192.168.147.144:80 -s wlc -p 300
$IPVSADM -a -t 192.168.147.144:80 -r 192.168.188.129:80 -m -w 1
$IPVSADM -a -t 192.168.147.144:80 -r 192.168.188.127:80 -m -w
执行:
bash /usr/local/sbin/lvs_nat.sh