Linux搭建keepalived+nginx高可用负载均衡(全网最详细~)

1、Keepalived实现备用机无缝顶替主机原理

多台nginx-----keepalived集群

keepalived集群中至少有两台机器

两台:一主一从

三台:一主二从…以此类推

keepalived集群设置一个唯一的虚拟IP,虚拟IP默认会与master机器绑定在一起

master机器将会有两个ip地址,一个是自己的源ip,一个是keepalived给的虚拟IP地址

非抢占模式下:

当master机器出现故障时,keepalived第一时间收回虚拟IP地址并分配给slave机器,此时相当于slave机器升级为master机器,此时用户只需要记住keepalived的虚拟IP地址即可。

master机器恢复正常,则不会被分配虚拟IP地址,直到slave机器出现故障后,master才会被分配虚拟IP地址

2、安装nginx

1.usr目录下创建nginx目录

2.nginx安装包传到/usr/Nginx目录

3.进入nginx通过命令解压 tar -zxvf nginx-xxxx安装包

4.解压完成进入nginx目录

5,通过 ./configure 进行预编译

6,安装四个依赖(gcc,zlib,openssl,pcre

命令如下:

yum   install  gcc

yum   install  zlib      zlib-devel

yum   install  openssl   openssl-devel

yum   install  pcre      pcre-devel

7,再次执行 ./configure 进行编译

8,执行 make 进行预编译安装

9,执行 make install 安装nginx

10,安装完毕通过 whereis nginx 查看安装目录

11,进入该安装目录,即上面查看到的目录

12,进入nginxsbin目录

三.配置systemctl启动方法

 1.创建一个nginx.service

 在 /usr/lib/systemd/system/目录下面新建一个nginx.service文件。并赋予可执行的权限

 vim /usr/lib/systemd/system/nginx.service

 chmod +x /usr/lib/systemd/system/nginx.service

[Unit]                                                                                      //对服务的说明

Description=nginx - high performance web server              //描述服务

After=network.target remote-fs.target nss-lookup.target   //描述服务类别


[Service]                                    //服务的一些具体运行参数的设置

Type=forking                               //后台运行的形式

PIDFile=/usr/local/nginx/logs/nginx.pid                //PID文件的路径

ExecStartPre=/usr/local/nginx/sbin/nginx -t  //启动准备

ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf       //启动命令

ExecReload=/usr/local/nginx/sbin/nginx -s reload //重启命令

ExecStop=/usr/local/nginx/sbin/nginx -s stop  //停止命令

ExecQuit=/usr/local/nginx/sbin/nginx -s quit  //快速停止

PrivateTmp=true                 //给服务分配临时空间


[Install]

WantedBy=multi-user.target                 //服务用户的模式

在启动服务之前,需要先重载systemctl命令

4.如果出现端口被占用情况

systemctl daemon-reload

systemctl start nginx.service

在nginx配置文件中   /usr/local/nginx/conf/nginx.conf

3、搭建Keepalived+Nginx高可用负载均衡服务器

1.设置Keepalived负载均衡服务器

准备两台Nginx服务器(一主一丛),分别安装Keepalived

安装keepalived命令:

yum -y install keepalived

查看网卡名字 

ip addr

打开配置文件

vi   /etc/keepalived/keepalived.conf

使用set nu 能够显示行号

删除这两行, 否则虚拟IP会绑定失败

13.vrrp_skip_check_adv_addr

14.vrrp_strict

删除后:

主:

备:

启动keepalived, 得到虚拟IP地址

启动keepalived命令:

systemctl start keepalived

重启keepalived命令:

systemctl restart keepalived

停止, 则会收回虚拟IP地址

停止keepalived命令:

systemctl stop keepalived

这时备用机器会收到ip

2.让keepalived监视nginx运行状态

在  /etc/keepalived目录中编写一个可执行的脚本check_nginx.shkeepalived监视nginx运行状态

输入命令  vi  check_nginx.sh  进行创建编辑

    A=`ps -C nginx --no-header |wc -l`          

if [ $A -eq 0 ];then                            

/usr/local/nginx/sbin/nginx    

Systemctl restart nginx     //配置systemctl方式启动            

    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then

        exit 1

    else

        exit 0

    fi

else

    exit 0

fi

上述脚本解释:

第一行:检查nginx是否已经启动(ps任务管理器中是否有nginx进程)

第二行:IF nginx已经启动,keepalived认为当前机器没有问题,exit 0

IF nginx未启动,keepalived尝试去启动nginx

第四行:IF 能够启动成功nginxkeepalived认为当前机器没有问题,exit 0

IF 不能启动成功nginxkeepalived认为当前机器有问题,exit 1

此时nginx不需要我们自己启动,交给keepalived帮助我们去启动它

直接执行脚本显示权限不够

执行脚本 ./check_nginx.sh

需要授予权限,绿色代表有执行权限

修改权限命令:chmod   744  check_nginx.sh

在执行执行check_nginx.sh脚本之前,nginx未启动

在执行check_nginx.sh脚本之后,则nginx已经被启动了

/etc/keepalived目录下输入vi  keepalived.conf 命令 打开keepalived.conf  定义一个策略,策略名为"check_nginx"

vrrp_script check_nginx {
script "/etc/keepalived/check_nginx.sh"
interval 1  //时长
weight -20
}

track_script {
check_nginx
}

先同时启动nginx

./check_nginx.sh

再同时启动keepalived    虚拟IP默认在MASTER机器

systemctl  stop  keepalived

systemctl  start  keepalived

1:systemctl enable keepalived.service  设置开机自动启动

2:systemctl disable keepalived.service 取消开机自动启动

3:systemctl start keepalived.service 启动

4:systemctl stop keepalived.service停止

查看服务是否开机启动命令

systemctl is-enabled keepalived.service

结果输出 enabled,则设置成功

设置nginx开机时启动服务

首先修改   /etc/rc.d/rc.local文件添加如下内容:

/usr/local/nginx/sbin/nginx   nginx的安装路径

执行以下命令,使/etc/rc.d/rc.local变成可执行文件。

输入命令:

chmod +x /etc/rc.d/rc.local

使用reboot命令重启后,查看nginx是否成功的自启动了:

  • 30
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值