nginx+keepalived高可用搭建的详细步骤

现在有2台机器,10.5.100.3610.5.100.37,分别在这2台机器上面部署nginx和keepalived,然后利用keepalived对nginx做高可用。

1,安装好nginx,使用的是

bash 复制代码
yum install nginx -y

2,修改nginx的配置文件nginx.conf

nginx的配置文件nginx.conf的存放地址在/etc/nginx/nginx.conf

bash 复制代码
vim /etc/nginx/nginx.conf

把以下这些内容写入nginx.conf

bash 复制代码
user  root;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  120s;

    gzip  on;

    #cda服务
    upstream cda_server{
        server   10.5.100.36:8099 weight=1 max_fails=3 fail_timeout=10;
        server   10.5.100.37:8099 weight=1 max_fails=3 fail_timeout=10;
    }

server {
    #nginx端口
        listen       6085;  
        server_name  localhost;
        client_max_body_size 20m;
        location / {
           proxy_pass http://cda_server;
           proxy_set_header Host $host;
           proxy_set_header X-Forwarded-For $remote_addr;
       }
    }
}

3,启动nginx并验证

启动

bash 复制代码
systemctl enable nginx
systemctl start nginx

验证

bash 复制代码
telnet 10.5.100.36  6085
telnet 10.5.100.37  6085
  • 以上3个步骤分别在2台机器上实施一下。

4,Keepalived安装,以及keepalived配置文件的编写

可以采用编译安装,也可以使用yum安装。在这里我是用yum安装。并且还指定了版本号。你们想要啥版本可以去yum list keepalived去查看一下。

bash 复制代码
yum install -y keepalived-1.3.5-19.el7.x86_64 
bash 复制代码
cd /etc/keepalived

把以下内容写入/etc/keepalived/keepalived.conf里面去

bash 复制代码
! Configuration File for keepalived
global_defs {
    router_id cda
    script_user root
    enable_script_security
}

vrrp_script check_ng 
{   
    script "/etc/keepalived/check_ng.sh"
    interval 2
    weight 2
}

vrrp_instance VI_1 {
    #36 MASTER 37 BACKUP
state MASTER
#网关需要修改 按实际的来
    interface ens32
    virtual_router_id 36
mcast_src_ip 10.5.100.36
#权重 MASTER比BACKUP大
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
virtual_ipaddress {
    #虚拟IP 需要修改 主备一致
        10.5.100.201
    }
    track_script {
       check_ng
    }
}

virtual_server 10.5.100.201 6085 {
    delay_loop 3
    lvs_sched rr
    lvs_method DR
    protocol TCP
    real_server 10.5.100.36 6085 {
        weight 1
    }
}

5, 写入/etc/keepalived/check_ng.sh

bash 复制代码
vim /etc/keepalived/check_ng.sh

把以下内容写入到/etc/keepalived/check_ng.sh

bash 复制代码
#!/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
        /usr/local/nginx/sbin/nginx
        n2=`ps -C nginx --no-heading|wc -l`
        if [ $n2 -eq "0"  ]; then
                echo "$d nginx down,keepalived will stop" >> /etc/keepalived/check_ng.log
                systemctl stop keepalived
        fi
fi

然后再修改一下权限

bash 复制代码
chmod +x /etc/keepalived/check_ng.sh

6,启动keepalived和验证

启动

bash 复制代码
systemctl enable keepalived
systemctl start keepalived

验证

bash 复制代码
telnet 虚拟ip  6085
telnet 虚拟ip  6085
  • 同样的,4,5,6三个步骤也要在两台机器分别都走一遍
相关推荐
半梦半醒*10 小时前
nginx的访问控制、用户认证、https
linux·运维·服务器·nginx·https·centos
1024find10 小时前
Jenkins与GitLab-CI的技术对比分析
运维·devops
Lin_Aries_042110 小时前
使用 Jenkins 的流水线项目实施 CI/CD
运维·ci/cd·docker·容器·云计算·jenkins
斯普信专业组10 小时前
Filebeat写ElasticSearch故障排查思路(下)
运维·elasticsearch·中间件·filebeat
深蓝易网10 小时前
3C电子企业柔性制造转型:如何通过MES管理系统实现快速换线与弹性生产?
大数据·运维·人工智能·重构·制造
Gss77710 小时前
Nginx 反向代理与负载均衡核心内容总结
运维·nginx·负载均衡
安审若无11 小时前
解决 sqlplus / as sysdba 登录缓慢问题
运维·服务器·数据库
szxinmai主板定制专家11 小时前
ZYNQ 平台下的四声道超声流量计设计与实现
运维·arm开发·人工智能·分布式·fpga开发
哲Zheᗜe༘11 小时前
了解学习Nginx反向代理与缓存功能
学习·nginx·缓存
熙客12 小时前
Jenkins:持续集成和持续交付(CI/CD)工具
运维·ci/cd·jenkins