本文的重点是Keepalived的配置,Nginx的配置就简略带过。
软件:CentOS 7.2 / Nginx 1.12.2 / Keepalived 1.3.9

ha-01:192.168.1.97
ha-02:192.168.1.98
VIP:192.168.1.99

1、安装之前首先关闭SELinux(重启后生效)

[root@ha-01 /]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

2、增加防火墙规则:(192.168.1.99为虚IP)

[root@ha-01 /]# vim /etc/sysconfig/iptables
增加如下项目:
-A INPUT -d 192.168.1.99 -j ACCEPT
-A INPUT -p vrrp -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

3、安装系统常用工具:

[root@ha-01 /]# yum -y install vim tree telnet curl wget git xz unzip htop iftop lshw

4、安装代码编译的依赖包:

[root@ha-01 /]# yum -y install gcc gcc-c++ make automake autoconf

5、安装Nginx相关依赖包:

[root@ha-01 /]# yum -y install pcre* zlib* openssl*

6、安装Keepalived相关依赖包:

[root@ha-01 /]# yum -y install libnl-devel libnl3-devel libnfnetlink-devel

7、下载、安装Nginx:

[root@ha-01 /]# wget -P/usr/local/src/ http://nginx.org/download/nginx-1.12.2.tar.gz
[root@ha-01 /]# tar -xzvf /usr/local/src/nginx-1.12.2.tar.gz -C /usr/local/src/
[root@ha-01 /]# cd /usr/local/src/nginx-1.12.2
[root@ha-01 /]# ./configure --prefix=/usr/local/nginx
[root@ha-01 /]# make -j 2
[root@ha-01 /]# make install

8、启动Nginx服务:

[root@ha-01 /]# /usr/local/nginx/sbin/nginx -t
[root@ha-01 /]# /usr/local/nginx/sbin/nginx

9、下载、安装Keepalived:

[root@ha-01 /]# wget -P/usr/local/src/ http://www.keepalived.org/software/keepalived-1.3.9.tar.gz
[root@ha-01 /]# tar -xzvf /usr/local/src/keepalived-1.3.9.tar.gz -C /usr/local/src/
[root@ha-01 /]# cd /usr/local/src/keepalived-1.3.9
[root@ha-01 /]# ./configure --prefix=/usr/local/keepalived
[root@ha-01 /]# make -j 2
[root@ha-01 /]# make install

10、编辑keepalived.conf配置文件:

[root@ha-01 /]# vim /usr/local/keepalived/etc/keepalived/keepalived.conf  

  [Master] ha-01(192.168.1.97)

! Configuration File for keepalived master

global_defs {
notification_email {
root@localhost
} notification_email_from root@localhost
smtp_server root
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
# vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
} vrrp_script chk_http_port {
script "/usr/local/keepalived/etc/keepalived/chk_http_port.sh"
interval 2
weight -10
fall 2
rise 1
} vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.131
} track_script {
chk_http_port
}
}

  [Backup] ha-02(192.168.1.98)

! Configuration File for keepalived slave

global_defs {
notification_email {
root@localhost
} notification_email_from root@localhost
smtp_server localhost
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
# vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
} vrrp_script chk_http_port {
script "/usr/local/keepalived/etc/keepalived/chk_http_port.sh"
interval 2
weight -10
fall 2
rise 1
} vrrp_instance VI_1 {
state BACKUP
interface eno16777736
virtual_router_id 51
priority 95
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.99
} track_script {
chk_http_port
}
}

11、编辑Nginx服务监控脚本:
  [root@ha-01 /]# vim /usr/local/keepalived/etc/keepalived/chk_http_port.sh
  [root@ha-01 /]# chmod +x /usr/local/keepalived/etc/keepalived/chk_http_port.sh  

#!/bin/bash

count=0
for (( k=0; k<2; k++ ))
do
check_code=$( curl --connect-timeout 3 -sL -w "%{http_code}\\n" http://localhost/ -o /dev/null )
if [ "$check_code" != "200" ]; then
count=$(expr $count + 1)
sleep 3
continue
else
count=0
break
fi
done if [ "$count" != "0" ]; then
systemctl stop keepalived
exit 1
else
exit 0
fi

12、编辑keepalived系统启动配置文件:

[root@ha-01 /]# vim /usr/local/keepalived/etc/sysconfig/keepalived
修改:
KEEPALIVED_OPTIONS="-D"
为:
KEEPALIVED_OPTIONS="-f /usr/local/keepalived/etc/keepalived/keepalived.conf -D -d -S 0"

13、修改keepalived日志文件路径:

[root@ha-01 /]# vim /etc/rsyslog.conf

  添加如下项目:

#keepalived -S 0
local0.*/usr/local/keepalived/etc/keepalived/keepalived.log

  重启rsyslog服务:

[root@ha-01 /]# systemctl restart rsyslog

14、拷贝keepalived启动文件至系统启动目录:

[root@ha-01 /]# cp /usr/local/src/keepalived-1.3.9/keepalived/etc/init.d/keepalived /etc/init.d/

15、编辑keepalived启动文件:

[root@ha-01 /]# vim /etc/init.d/keepalived
修改:
. /etc/sysconfig/keepalived
为:
. /usr/local/keepalived/etc/sysconfig/keepalived 并增加keepalived可执行文件至系统环境:
PATH="$PATH:/usr/local/keepalived/sbin"
export PATH

16、启动keepalived服务:

[root@ha-01 /]# systemctl enable keepalived
[root@ha-01 /]# systemctl start keepalived

17、查看keepalived进程:

[root@ha-01 /]# ps -ef | grep "keepalived"

[THE END]  

Nginx+Keepalived搭建高可用负载均衡集群的更多相关文章

  1. Linux 笔记 - 第十八章 Linux 集群之(三)Keepalived+LVS 高可用负载均衡集群

    一.前言 前两节分别介绍了 Linux 的高可用集群和负载均衡集群,也可以将这两者相结合,即 Keepalived+LVS 组成的高可用负载均衡集群,Keepalived 加入到 LVS 中的原因有以 ...

  2. LVS+Keepalived 实现高可用负载均衡集群

    LVS+Keepalived  实现高可用负载均衡集群     随着网站业务量的增长,网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如 F5 ,Array又太贵,你们又是创业型互联公司如何有效 ...

  3. Centos7.2下基于Nginx+Keepalived搭建高可用负载均衡(一.基于Keepalived搭建HA体系)

    说明 本文只为方便日后查阅,不对一些概念再做赘述,网上都有很多明确的解释,也请大家先了解相关概念. 两台搭建HA的服务器是华为云上的ECS(不要忘记开通VPC,保证我们的服务器都处在一个内网环境),由 ...

  4. haproxy + keepalived 实现高可用负载均衡集群

    1. 首先准备两台tomcat机器,作为集群的单点server. 第一台: 1)tomcat,需要Java的支持,所以同样要安装Java环境. 安装非常简单. tar xf  jdk-7u65-lin ...

  5. Keepalived+LVS高可用负载均衡集群

    概述 Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检查(HeathChecking)功能——判断LVS负载调度器.节点服务器的可用性,及 ...

  6. 基于Haproxy+Keepalived构建高可用负载均衡集群

    实验环境: 主机名 IP地址 VIP 192.168.200.254 Haproxy-1 192.168.200.101 Haproxy-2 192.168.200.102 Nginx1 192.16 ...

  7. Haproxy+Keepalived构建高可用负载均衡集群

    实验环境: 主机名 IP地址 VIP 192.168.200.254 Haproxy-1 192.168.200.101 Haproxy-2 192.168.200.102 Nginx1 192.16 ...

  8. Keepalived+Nginx实现高可用负载均衡集群

    一 环境介绍 1.操作系统CentOS Linux release 7.2.1511 (Core) 2.服务keepalived+nginx双主高可用负载均衡集群及LAMP应用keepalived-1 ...

  9. RabbitMQ(四):使用Docker构建RabbitMQ高可用负载均衡集群

    本文使用Docker搭建RabbitMQ集群,然后使用HAProxy做负载均衡,最后使用KeepAlived实现集群高可用,从而搭建起来一个完成了RabbitMQ高可用负载均衡集群.受限于自身条件,本 ...

随机推荐

  1. 如何将数据库中的值经过servlet传入到jsp页面,并且用EL表达式显示出值

    方法一:通过id查询某一数据库表中具体的行,将值封装在相应的对象中,如下面的对象Notice servlet中 String noticeId=request.getParameter("n ...

  2. Ubuntu18.04下安装配置MongoDB4.0.6

    搭建MongoDB环境 安装MongoDB 1.下载安装包 MongoDB 提供了 linux 各发行版本 64 位的安装包,你可以在官网下载安装包. 下载地址:https://www.mongodb ...

  3. Android破解学习之路(十五)—— 【Unity3D】洛菲斯的呼唤(Lophis roguelike)无限金币(道具)的实现 破解

    前言 之前玩月圆之夜玩的挺high的,最近又找到了个与月圆之夜类似的卡牌游戏,游戏名为Lophis roguelike,中文翻译名洛菲斯的呼唤. 但是这个与月圆之夜有所不同,如果失败了,只能从开头重新 ...

  4. SpringBoot+MyBatis配置多数据源

    SpringBoot 可以支持多数据源,这是一个非常值得学习的功能,但是从现在主流的微服务的架构模式中,每个应用都具有唯一且准确的功能,多数据源的需求很难用到,考虑到实际情况远远比理论复杂的多,这里还 ...

  5. .Net Core 在Linux服务器下部署程序--(3). 部署.net Core程序

    确认第二步中的软件已安装完成 lrzsz文件上传下载软件 zip与unzip压缩包软件 net core 相关软件 确认上述软件安装完成之后,开始部署程序 创建部署文件夹 我的习惯是在usr文件夹下新 ...

  6. 简单shellcode编写

    0x00 介绍 Shellcode 是指经过精心设计的一串指令,一旦注入正在运行的应用程序中即可运行,常用于栈和基于堆的溢出.术语Shellcode意思指的便是用于启动一个命令Shell的已编写好的可 ...

  7. url获取整理

    $_SERVER['DOCUMENT_ROOT'];   //网站的根目录 echo $_SERVER['SERVER_NAME']; //当前的服务器域名 echo $_SERVER['HTTP_H ...

  8. RocketMQ4.3.X关于设置useEpollNativeSelector = true报错问题

    前一阵子刚整理完RocketMQ4.3.x版本的相关配置的工作,接下来就来测试一下改变参数会带来什么好的结果 首先我就选中了useEpollNativeSelector 这个参数 默认这个参数是 fa ...

  9. Node.js在指定的图片模板上生成二维码图片并附带底部文字说明

    在Node.js中,我们可以通过qr-image包直接在后台生成二维码图片,使用方法很简单: var qr = require('qr-image'); exports.createQRImage = ...

  10. 前端/C# 前后台交互文件上传、下载

    试了很多方式,最终确认这个全面简单版的.废话不多说,贴码. 文件上传 input的type命名为file,即可实现文件上传.嗯~~~现在html还是很强大的.Good! 前端 单个文件上传 Html: ...