对于主负载均衡服务器,修改配置文件

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
router_id lb01 #组成员名称
}

vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100 #优先级
advert_int 1 #定义组播包发送的间隔时间,主备设置必须一致
authentication { #组成员通信密码,明文
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.2/24 #虚拟IP
}
}


备用负载均衡服务器

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
router_id lb02
}

vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.2/24
}
}


这里需要注意,其中邮箱通知删除,是为了以后的监控服务来统一监控。请关注后续博文。

这个时候重新启动keepalived服务

​systemctl restart keepalived​

如果发现有两个虚拟VIP 这是因为防火墙没有关闭的原因。

​iptables -L​

​systemctl disable firewalld​

就可以。

这就是脑裂现象。

还有虚拟的VIP的子网掩码必须加,不然默认为32。会造成不能自动切换。

这里实现使用脚本来监测,从而实现邮件通知。

监控VIP,防止脑裂

首先Linux需要下载:mailx软件

​yun install -y mailx​

然后配置配置文件:

​vim /etc/mail.rc​

在最后几行添加

set from=yangyang_linux@163.com smtp=smtp.163.com
set smtp-auth-user=yangyang_linux@163.com set smtp-auth-password=LJXZIHMLYIRYEEZL smtp-auth=login


两行,其中set from使用的是第三方邮箱,自行注册,我这里是163的,还有smtp-auth-password是SMTP的码不是邮箱密码。

一切准备好之后,重新启动服务。

​systemctl restart postfix​

脚本:

#! /bin/bash
ip a s eth0 Igrep "192.168.1.2" >/dev/nul1
if[ $?-ne 0 ];then
echo "keepalived服 务出现异常,请进行检查" |mail -s 异常告警-keepalived 177156668@qq . com
fi


写入定时任务,每几分钟进行监控。

实现keepaliveed与Nginx一起停止,释放VIP

脚本:

vim check_web.sh
#! /bin/bash
num=ps -ef I grep -c nginx
if[ $num -lt 2 ];then
systemctl stop keepalived
fi


需要注意,check_web.sh这里脚本名称如果带有nginx的话会造成查询问题。

实时监控nginx服务状态—keepalived配置文件

keepalived配置文件

check_ web =/server/scripts/check_web. sh
vrrp_script check_web {
script "/server/scripts/check_web. sh #定义需要监控脚本(脚本有执行权限,而且是绝对路径)
interval 2 #执行脚本的间隔吋同(秒)
weight 2 #权重
}

$check web
track_ script {
check web #调用执行你的脚本信息
}
}


weight参数:权重值参数,主要用于和优先级进行运算

  • 重要知识点01:
  • 求和运算: weight数值必须是正数 weight + priority自动提升优先级,使主机可以成为主服务器
  • 求差运算: weight数值必须是负数 weight - priority 自动降低优先级,使主机可以成为备服务器
  • 重要知识点02:
  • 运行一个脚本,执行脚本结束之后,脚本的执行结果可以为真看脚本执行返回值$?==0
  • 运行一个脚本,执行脚本结束之后,脚本的执行结果可以为假看脚本执行返回值$$<>0
  • 重要知识点03:
  • 如何将知识01 +知识02结合
    权重值为正数:
    1.脚本运行后为真 weight + priority
    2.脚本运行后为假 priority
    权重值为负数:
    1.脚本运行后为真. priority
    2.脚本运行后为假 weight-priority

双主配置

第一台负载均衡服务器

​vim /etc/keepalived/keepalived.conf​

! Configuration File for keepalived

global_defs {
router_id lb01
}

vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.2/24
}
}
vrrp_instance VI_2 {
state BACKUP
interface ens33
virtual_router_id 52
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.5/24
}
}


第二台负载均衡服务器

​vim /etc/keepalived/keepalived.conf​

! Configuration File for keepalived

global_defs {
router_id lb02
}

vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.2/24
}
}
vrrp_instance VI_2 {
state BACKUP
interface ens33
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.5/24
}
}


重启服务

​systemctl restart keepalived​

高可用服务安全访问配置(负载均衡服务)

修改nginx负载均衡文件

第一台负载均衡服务器

upstream load_banalcing {
server 172.16.69.101:80;
server 172.16.69.102:80;
server 172.16.69.103:80;
}

server {
listen 192.168.1.2:80 default_server;
server_name www.yangyang.com;
location / {
proxy_pass http://load_banalcing;
}
}

server {
listen 192.168.1.5:80 default_server;
server_name blog.yangyang.com;
location / {
proxy_pass http://load_banalcing;
}
}


第二台负载均衡服务器

upstream load_banalcing {
server 172.16.69.101:80;
server 172.16.69.102:80;
server 172.16.69.103:80;
}

server {
listen 192.168.1.2:80 default_server;
server_name www.yangyang.com;
location / {
proxy_pass http://load_banalcing;
}
}

server {
listen 192.168.1.5:80 default_server;
server_name blog.yangyang.com;
location / {
proxy_pass http://load_banalcing;
}
}


再重启的时候会有报错

异常问题报错:

​nginx: [emerg] bind() to 192.168.1.2:80 failed (99: Cannot assign requested address)​

如何设置监听网卡上没有的地址

解决:需要修改内核信息

​echo "net.ipv4.ip_nonlocal_bind = 1" >> /etc/sysctl.conf​

​sysctl -p​

这里需要注意,有关IP的设置,reload配置文件是不可以的,必须重新启动。