当前位置: 首页 > news >正文

LVS+Keepalived+nginx

LVS+Keepalived+nginx
1 安装依赖
sudo yum install ipvsadm keepalived -y
查询是否安装成功
rpm -q -a keepalived

2 配置虚拟IP并安装ipvsadm
/etc/sysconfig/network-scripts
cp ifcfg-ens33  ifcfg-ens33:1
修改里面配置文件
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPADDR=172.16.15.201
NETMASK=255.255.255.0
GATEWAY=172.16.15.2
IPV4_FAILURE_FATAL="no"
IIPV6INIT="no"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="eb60d6d6-4ec8-4dbf-bb41-f548ffbd378c"
DEVICE="ens33"
ONBOOT="yes"
HWADDR=00:0C:29:B0:3A:79
DNS1=8.8.8.8
DNS2=8.8.4.4
~                                   


3 配置 LVS Director 节点(主/备)
vi /etc/keepalived/keepalived.conf

bal_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id had1(不能重复)
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type ad
        auth_pass 123123
    }
    virtual_ipaddress {
        172.16.15.201
    }
}
 
virtual_server 172.16.15.201 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    protocol TCP
 
    real_server 172.16.15.130 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
        }
    }
    real_server 172.16.15.131 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
        }
    }
}

4 给个权限
chmod 777 /etc/keepalived/nginx_check.sh

nginx+keepalived实现高可用: 主从服务器新增nginx_check.sh脚本 (通过判断Nginx服务是否还存活来判断,如果没有nginx服务,重启机器)
vi /etc/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

5 启动服务
sudo systemctl enable keepalived
sudo systemctl start keepalived
systemctl stop keepalived
查看是否存在
ps aux | grep keepalived


6 安装 Nginx
sudo yum install nginx -y

7 VIP与路由配置Nginx服务器

 在 172.16.15.130和 172.16.15.131构建虚拟网络接口子接口
进入到/etc/sysconfig/network-scripts

cd /etc/sysconfig/network-scripts
拷贝一份ifcfg-lo命名为ifcfg-lo:1

cp ifcfg-lo ifcfg-lo:1
修改里面配置文件

DEVICE=lo.1
IPADDR=172.16.15.201
NETMASK=255.255.255.255
NETWORK=172.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback2

重起
service network restart

8 realserver的配置

两台web服务器都要执行下面脚本:

#!/bin/bash

    SNS_VIP=172.16.15.201

    #/etc/rc.d/init.d/functions

    case "$1" in

    start)

        ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP

        /sbin/route add -host $SNS_VIP dev lo:0

        echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

        echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

        echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

        echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

        sysctl -p >/dev/null 2>&1

        echo "RealServer Start OK"

        ;;

    stop)

        ifconfig lo:0 down

        route del $SNS_VIP >/dev/null 2>&1

        echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore

        echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce

        echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore

        echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce

        echo "RealServer Stoped"

        ;;

    *)

        echo "Usage: $0 {start|stop}"

        exit 1

    esac

exit 0

 执行:

chmod u+x /etc/rc.d/init.d/realserver.sh

启动

./realserver.sh start (注意目录  cd # pwd
/etc/rc.d/init.d)
9 起动Nginx
systemctl start nginx


 

http://www.lryc.cn/news/572058.html

相关文章:

  • Spring Boot + MyBatis + Vue:打造高效全栈应用的黄金组合
  • Vue 组件数据流与状态控制最佳实践规范
  • 博图SCL中CONTINUE语句详解:高效循环控制案例
  • RabbitMQ多角度可靠性分析/基于Java代码深度解析
  • android 象棋游戏开发
  • Android Studio Profiler使用
  • 数据差异的iOS性能调试:设备日志导出和iOS文件管理
  • Redis之分布式锁(3)
  • 【深度学习】条件随机场(CRF)深度解析:原理、应用与前沿
  • Ubuntu 安装Telnet服务
  • Cursor Pro取消500次请求限制,无限用的体验更好了吗?
  • YOLOv8改进:Neck篇——2024.1全新MFDS-DETR的HS-FPN特征融合层解析
  • 图像特征检测算法SIFT
  • 实现自动胡批量抓取唯品会商品详情数据的途径分享(官方API、网页爬虫)
  • python校园拼团系统
  • voronoi图,凸壳,和早已遗忘的定不定积分
  • LangChain中的向量数据库抽象基类-VectorStore
  • MySQL存储引擎深度解析:InnoDB、MyISAM、MEMORY 与 ARCHIVE 的全面对比与选型建议
  • Docker PowerJob
  • 今天我想清楚了
  • Conda 常用命令大全:从入门到高效使用
  • Vue添加图片作为水印
  • 最大公约数
  • Espresso + Java 详细示例
  • 【音视频】PJSIP库——pjsua命令使用详解
  • CANFD加速是什么?和CANFD有什么区别?
  • 自演进多智能体在医疗临床诊疗动态场景中的应用
  • Jenkins审核插件实战:实现流水线审批控制的最佳实践
  • Vue.js第二节
  • 使用Trace分析Android方法用时