栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

keepalived+nginx高可用集群

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

keepalived+nginx高可用集群

前期环境准备
  • 2台虚拟机当作代理服务器
    • 主机名:master,IP:192.168.80.20
    • 主机名:backup,ip:192.168.80.21
  • 2台虚拟机当网站服务器
    • IP:192.168.80.35
    • IP:192.168.80.36
#关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld

#关闭SELinux(临时关闭)
[root@localhost ~]# setenforce 0

#修改配置文件永久关闭
[root@localhost ~]# vim /etc/selinux/config 
...
SELINUX=disabled

#情况yum路径
[root@localhost ~]# rm -rf /etc/yum.repos.d/*

#创建挂载点
[root@localhost ~]# mkdir /mnt/centos

#挂载iso镜像文件
[root@localhost ~]# mount /dev/cdrom /mnt/centos/

#搭建本地yum源
[root@localhost ~]# vim /etc/yum.repos.d/local.repo
[local]
name=local_centos
baseurl=file:///mnt/centos
enabled=1
gpgcheck=0

#检测软件仓库可用性
[root@localhost ~]# yum repolist

#源码安装nginx软件依赖
[root@localhost ~]# yum -y install gcc pcre-devel openssl-devel

#解压源码包
[root@localhost ~]# tar -xf nginx-1.18.0.tar.gz

#进入源码路径
[root@localhost ~]# cd nginx-1.18.0

#检测环境
[root@localhost nginx-1.18.0]# ./configure 

#编译安装
[root@localhost nginx-1.18.0]# make && make install 

#网站服务器修改主机名(主机名与主机IP地址相对应)
[root@localhost ~]# hostnamectl set-hostname node1
[root@localhost ~]# hostnamectl set-hostname node2

#修改默认首页文件(首页文件内容与主机名相对应)
[root@node1 ~]# vim /usr/local/nginx/html/index.html 

welcome to node1 [root@node2 ~]# vim /usr/local/nginx/html/index.html

welcome to node2 #部署调度器,修改主机名 [root@localhost ~]# hostnamectl set-hostname nginx-master [root@localhost ~]# hostnamectl set-hostname nginx-backup #部署调度器 [root@nginx-master ~]# vim /usr/local/nginx/conf/nginx.conf 34 upstream server { #定义集群 35 server 192.168.80.35:80; 36 server 192.168.80.36:80; 37 } 46 location / { 47 proxy_pass http://server; #代理调用集群 安装keepalived服务
#nginx+keepalived实现负载均衡高可用集群

#两台调度器安装keepalived服务
[root@nginx-master ~]# yum -y install keepalived
[root@nginx-packup ~]# yum -y install keepalived

#修改主服务器keepalived配置文件(两台调度器都要修改)
[root@nginx-proxy1 ~]# vim /etc/keepalived/keepalived.conf 

  1 ! Configuration File for keepalived
  2 
  3 global_defs {
 12    router_id 2
 17 }
 19 vrrp_instance VI_1 {
 20     state MASTER     #该服务器为主服务器,默认不需要改
 21     interface ens33  #指定当前主机网卡
 22     virtual_router_id 51  #服务器ID,默认不需要改
 23     priority 100          #服务器优先级,默认不需要改
 24     advert_int 1          #相互检测状态的时间,默认1秒钟检测一次,默认不需要改
 25     authentication {      #相互验证身份的方式,默认不需要改
 26         auth_type PASS    #密码认证,默认不需要改
 27         auth_pass 1111    #密码,默认不需要改
 28     }
 29     virtual_ipaddress {
 30         192.168.80.100    #指定VIP
 33     }
 34 }


#修改备用服务器keepalived配置文件
[root@nginx-proxy2 ~]# vim /etc/keepalived/keepalived.conf 
  1 ! Configuration File for keepalived
  2 
  3 global_defs {
 12    router_id 2
 17 }  
 18 
 19 vrrp_instance VI_1 {
 20     state BACKUP      #指定改服务器为备用服务器
 21     interface ens33   #指定服务器的网卡
 22     virtual_router_id 51
 23     priority 90       #指定优先级
 24     advert_int 1
 25     authentication {
 26         auth_type PASS
 27         auth_pass 1111
 28     }
 29     virtual_ipaddress {
 30         192.168.80.10  #指定VIP
 31     }
 32 }
 33 
 
#启动服务并设置服务随机自启
[root@nginx-proxy1 ~]# systemctl start keepalived
[root@nginx-proxy1 ~]# systemctl enable keepalived

#备用服务器启动服务并设置服务随机自启
[root@nginx-proxy2 ~]# systemctl start keepalived
[root@nginx-proxy2 ~]# systemctl enable keepalived

#编写检测nginx状态脚本
[root@nginx-proxy1 ~]# vim /etc/keepalived/chk_nginx.sh 
#!/bin/bash
conut=`ps -C nginx | grep -v PID | wc -l`
if [ $conut -eq 0 ];then
        /usr/local/nginx/sbin/nginx
        sleep 5
conut=`ps -C nginx | grep -v PID | wc -l`
if [ $conut -eq 0 ];then
        systemctl stop keepalived
fi
fi

#赋予脚本执行权限
[root@nginx-proxy1 ~]# chmod u+x /etc/keepalived/chk_nginx.sh 

#停止nginx服务
[root@nginx-proxy1 ~]# /usr/local/nginx/sbin/nginx -s stop

#测试脚本
[root@nginx-proxy1 ~]# /etc/keepalived/chk_nginx.sh 

#查看进程
[root@nginx-proxy1 ~]# ps -C nginx
   PID TTY          TIME CMD
 62403 ?        00:00:00 nginx
 62405 ?        00:00:00 nginx

#修改keepalived配置文件,指定监控脚本,并添加脚本为监控条件
[root@nginx-proxy1 ~]# vim /etc/keepalived/keepalived.conf 
! Configuration File for keepalived

global_defs {
   router_id 2
}
#指定脚本路径,定义监控项
vrrp_script chk_nginx {
        script "/etc/keepalived/chk_nginx.sh"
        interval 2
}
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }

#调用监控项
track_script {
        chk_nginx
}
    virtual_ipaddress {
        192.168.80.10
    }
}

#重启服务
[root@nginx-proxy1 ~]# systemctl restart keepalived

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号