IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 实例部署:nginx+Keepalived实现高可用 -> 正文阅读

[系统运维]实例部署:nginx+Keepalived实现高可用

nginx+Keepalived实现高可用

实验环境

主机名/ip

nginx01/172.16.10.10

nginx02/172.16.10.11

关闭防火墙和selinux

systemctl stop firewalld

systemctl disable firewalld

sed -i "s/.*SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config reboot

vip172.16.10.100
添加hosts解析

cat >> /etc/hosts << EOF

172.16.10.10 nginx01

172.16.10.11 nginx02

EOF

1.1 部署nginx

  • 2个nginx节点都要安装,nginx02 根据nginx01 进行部署

?[root@nginx01 ~]# yum -y install pcre-devel zlib-devel gcc gcc-*
?[root@nginx01 ~]# tar zxf nginx-1.12.0.tar.gz -C /usr/src
?[root@nginx01 ~]# cd nginx-1.12.0/
?[root@nginx01 nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
?[root@nginx01 nginx-1.12.0]# make && make install
?[root@nginx01 nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
?[root@nginx01 nginx-1.12.0]# useradd -M -s /sbin/nologin nginx
?[root@nginx01 nginx-1.12.0]# nginx
?[root@nginx01 nginx-1.12.0]# echo "nginx 01" > /usr/local/nginx/html/index.html

1.2 部署Keepalived

  • 2个nginx节点都要部署

1.2.1 安装Keepalived

?# 安装Keepalived
?[root@nginx01 ~]# yum -y install keepalived

1.2.2 修改Keepalived配置文件

?[root@nginx01 ~]# vim /etc/keepalived/keepalived.conf
?! Configuration File for keepalived
?global_defs {
? ? router_id LVS_DEVEL
?}
?## keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance的优先级。
?##如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加。如果脚本执行结果非0,
?##并且weight配置的值小于 0,则优先级相应的减少。其他情况,维持原本配置的优先级,即配置文件中
?vrrp_script check_nginx { ? ? ?## Keepalived定时执行check_nginx
? ? ? ?  script "/etc/keepalived/nginx_check.sh" ? ##脚本路径
? ? ? ?  interval 1 ? ? ? ##每1秒检查一次
? ? ? ?  weight -2 ? ? ? ##每失败一次优先级减少2
?}
??
?vrrp_instance VI_1 {
? ?  state MASTER ? ? ? ? ? ?# 两个 DS,一个为 MASTER 一个为 BACKUP
? ?  interface ens33 ? ? ? ? # 当前 IP 对应的网络接口,通过 ifconfig 查询
? ?  virtual_router_id 62 ? ?# 虚拟路由 ID(0-255),在一个 VRRP 实例中主备服务器 ID 必须一样
? ?  priority 200 ? ? ? ? ? ?# 优先级值设定:MASTER 要比 BACKUP 的值大
? ?  advert_int 1 ? ? ? ? ? ?# 通告时间间隔:单位秒,主备要一致
? ?  authentication { ? ? ? ?# 认证机制,主从节点保持一致即可
? ? ? ?  auth_type PASS
? ? ? ?  auth_pass 1111
? ?  }
? ?  track_script { ? ? ?# vrrp_instance需要执行的脚本
? ? ? ?  check_nginx ? ? # 脚本为全局定义的脚本
? ?  }
? ?  virtual_ipaddress {
? ? ? ? ?172.16.10.100/24 ? ? ? # VIP,可配置多个
? ?  }
?}
??
?# web 配置
?virtual_server 172.16.10.100 80  {
? ?  delay_loop 3 ? ? ? ? ? ? ? ? ? ?# 设置健康状态检查时间
? ?  lb_algo rr ? ? ? ? ? ? ? ? ? ? ?# 调度算法,这里用了 rr 轮询算法
? ?  lb_kind DR ? ? ? ? ? ? ? ? ? ? ?# 这里测试用了 Direct Route 模式
? ?  protocol TCP
? ? ? ?  real_server 172.16.10.10 80 {
? ? ? ?  weight 1
? ? ? ?  TCP_CHECK {
? ? ? ? ? ?  connect_timeout 10   
? ? ? ? ? ?  retry 3       ? ? 
? ? ? ? ? ?  delay_before_retry 3   
? ? ? ? ? ?  connect_port 80
? ? ? ?  }
? ?  }
?}

1.2.3 创建Keepalived需要执行的定时脚本

?# 获取nginx进程的数量
?[root@nginx01 ~]# vim /etc/keepalived/nginx_check.sh 
?#!/bin/bash
?num=$(ps -ef | grep nginx | grep process | grep -v grep |wc -l)
?if [ $num -eq 0 ]
?then
? ? ? ?  systemctl stop keepalived
?fi
??
?# 或者 通过查看nginx的状态
?[root@nginx01 ~]# vim /etc/keepalived/nginx_check.sh 
?#!/bin/bash
?nestat -napt | grep nginx &> /dev/null
?if [ $? -ne 0 ]
?then
?    systemctl stop keepalived
?fi

1.2.4 启动Keepalived

?[root@nginx01 ~]# systemctl start keepalived
?[root@nginx01 ~]# systemctl enable keepalived

1.3 验证

?# 通过客户机循环访问172.16.10.100,停止nginx01节点,看是否进行转移
?# 客户机
?[root@yan ~]# for i in $(seq 1 100);do curl 172.16.10.100;sleep 1;done
?#nginx01 节点
?[root@nginx01 ~]# nginx -s stop
?# 观察客户机变化
?nginx 01 
?nginx 01 
?nginx 01 
?nginx 01 
?nginx 01 
?nginx 01 
?nginx 01 
?nginx 01 
?nginx 01 
?nginx 01 
?nginx 02 
?nginx 02 
?nginx 02 
?nginx 02 
?nginx 02 
?nginx 02 
?nginx 02 
?nginx 02 
??

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-09-01 12:21:05  更:2021-09-01 12:22:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:05:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码