centos7中安装和配置nginx和keepalived

一.Linux安装nginx

1.安装依赖

yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

2.创建一个文件夹

cd /usr/local
mkdir nginx
cd nginx

3.将nginx安装包放在nginx文件夹下并解压

或者使用wget联网下载

wget http://nginx.org/download/nginx-1.16.1.tar.gz
tar -xvf nginx-1.16.1.tar.gz

4.编译并make

cd nginx-1.16.1
./configure --prefix=/usr/local/naginx
make
make install

常用命令

 #启动
/usr/local/nginx/sbin/nginx  
#修改配置文件重新加载
/usr/local/nginx/sbin/nginx  -s reload  
#关闭
/usr/local/nginx/sbin/nginx

二:安装Keepalived

1.联网下载到/usr/local目录下并解压

有可能会提示连接不成功,加上它提示的命令再下载就好了

cd /usr/local
wget http://www.keepalived.org/software/keepalived-1.4.2.tar.gz

tar zxvf keepalived-1.4.2.tar.gz

2.安装相关依赖,有不用下载了

yum install -y gcc openssl-devel popt-devel

3.编译

cd keepalived-1.4.2

./configure --prefix=/usr/local/keepalived

make

make install

4.相关配置,复制就完了

cp /usr/local/keepalived-1.4.2/keepalived/etc/init.d/keepalived /etc/init.d/

mkdir /etc/keepalived

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

cp /usr/local/keepalived-1.4.2/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

使用keepalived保证nginx的高可用(一主一从)

我的主服务器ip为(192.168.118.3),从机(192.168.118.5)

在两条服务器分别安装nginx和keepalived,

修改keeplived.conf文件

vim /etc/keepalived/keepalived.conf

主机配置文件

! Configuration File for keepalived

global_defs {
    #一个没重复的名字即可
    router_id LVS_DEVEL        
}

# 检测nginx是否运行
vrrp_script chk_nginx {
        script "/etc/keepalived/nginx_check.sh"
        interval 2
#权重减少20,减少完要比从机的值小 weight -20 } vrrp_instance VI_1 { # MASTER代表主机 state MASTER # 网卡名字 ip addr 可以查看 interface eno16777736 # 同一个keepalived集群的virtual_router_id相同 virtual_router_id 51 # 权重,master要大于slave priority 100 # 主备通讯时间间隔 advert_int 1 # 如果两节点的上联交换机禁用了组播,则采用vrrp单播通告的方式 # 本机ip unicast_src_ip 192.168.118.3 unicast_peer { # 其他机器ip 192.168.118.5 } # 设置nopreempt防止抢占资源 nopreempt # 主备保持一致 authentication { auth_type PASS auth_pass 1111 } # 与上方nginx运行状况检测呼应 track_script { chk_nginx } virtual_ipaddress { # 虚拟ip地址(VIP,一个尚未占用的内网ip即可) 192.168.118.118 } }

从机配置文! Configuration File for keepalived


global_defs {
    #一个没重复的名字即可
    router_id LVS_DEVEL
}

# 检测nginx是否运行
vrrp_script chk_nginx {
        script "/etc/keepalived/nginx_check.sh"
        interval 2
weight -20 } vrrp_instance VI_1 { # 代表是从机 state BACKUP # 网卡名字,ip addr获取 interface eno16777736 # 同一个keepalived集群的virtual_router_id相同 virtual_router_id 51 # 权重,master要大于slave priority 90 # 主备通讯时间间隔 advert_int 1 # 如果两节点的上联交换机禁用了组播,则采用vrrp单播通告的方式 # 本机ip unicast_src_ip 192.168.118.5 unicast_peer { # 其他机器ip 192.168.118.3 } # 设置nopreempt防止抢占资源 nopreempt # 主备保持一致 authentication { auth_type PASS auth_pass 1111 } # 与上方nginx运行状况检测呼应 track_script { chk_nginx } virtual_ipaddress { # 虚拟ip地址(VIP,一个尚未占用的内网ip即可) 192.168.118.118 } }

主从机都需配置检测nginx是否在运行,不在允许就直接启动nginx的脚本,和keepalived放在一起

脚本名称 nginx_check.sh

#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
    /usr/local/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
    fi
fi

只要配置好了,以后直接启动keepalived就好了,keepalived运行之后就会检测nginx是否在运行,不在运行就通过脚本去启动

自动重启不了解决方案

查看脚本是否有运行的权限
如果你是root登陆的话(不是的话,切换到root用户,对*.sh 赋可执行的权限)

chmod 777*.sh
或者
chmod +x *.sh

keepalived常用命令

#启动
service keepalived start
#停止
service keepalived stop
#查看状态
service keepalived status

开始测试

直接访问主机的nginx服务

 直接访问从机的nginx服务

 通过keepalived 设置的虚拟ip进行访问

 一切正常,将主机的keepalived服务给停掉,模拟服务器宕机的场景

然后再通过虚拟IP进行访问

 成功切换到备用服务器

接下来重启主服务器,再访问虚拟ip

 由此可见,当主机dowm掉的时候才会访问从机,当主机连进来的时候又回去访问主机

当主机正常运行通过ip addr命令的时候可以看到网络下多了个虚拟ip,而从机却没有,只要当主机挂了时候从机才会显示xuniip

原文地址:https://www.cnblogs.com/yjc1605961523/p/12295051.html