Nginx+Keepalived搭建高可用负载均衡集群
本文的重点是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搭建高可用负载均衡集群的更多相关文章
- Linux 笔记 - 第十八章 Linux 集群之(三)Keepalived+LVS 高可用负载均衡集群
一.前言 前两节分别介绍了 Linux 的高可用集群和负载均衡集群,也可以将这两者相结合,即 Keepalived+LVS 组成的高可用负载均衡集群,Keepalived 加入到 LVS 中的原因有以 ...
- LVS+Keepalived 实现高可用负载均衡集群
LVS+Keepalived 实现高可用负载均衡集群 随着网站业务量的增长,网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如 F5 ,Array又太贵,你们又是创业型互联公司如何有效 ...
- Centos7.2下基于Nginx+Keepalived搭建高可用负载均衡(一.基于Keepalived搭建HA体系)
说明 本文只为方便日后查阅,不对一些概念再做赘述,网上都有很多明确的解释,也请大家先了解相关概念. 两台搭建HA的服务器是华为云上的ECS(不要忘记开通VPC,保证我们的服务器都处在一个内网环境),由 ...
- haproxy + keepalived 实现高可用负载均衡集群
1. 首先准备两台tomcat机器,作为集群的单点server. 第一台: 1)tomcat,需要Java的支持,所以同样要安装Java环境. 安装非常简单. tar xf jdk-7u65-lin ...
- Keepalived+LVS高可用负载均衡集群
概述 Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检查(HeathChecking)功能——判断LVS负载调度器.节点服务器的可用性,及 ...
- 基于Haproxy+Keepalived构建高可用负载均衡集群
实验环境: 主机名 IP地址 VIP 192.168.200.254 Haproxy-1 192.168.200.101 Haproxy-2 192.168.200.102 Nginx1 192.16 ...
- Haproxy+Keepalived构建高可用负载均衡集群
实验环境: 主机名 IP地址 VIP 192.168.200.254 Haproxy-1 192.168.200.101 Haproxy-2 192.168.200.102 Nginx1 192.16 ...
- Keepalived+Nginx实现高可用负载均衡集群
一 环境介绍 1.操作系统CentOS Linux release 7.2.1511 (Core) 2.服务keepalived+nginx双主高可用负载均衡集群及LAMP应用keepalived-1 ...
- RabbitMQ(四):使用Docker构建RabbitMQ高可用负载均衡集群
本文使用Docker搭建RabbitMQ集群,然后使用HAProxy做负载均衡,最后使用KeepAlived实现集群高可用,从而搭建起来一个完成了RabbitMQ高可用负载均衡集群.受限于自身条件,本 ...
随机推荐
- 如何将数据库中的值经过servlet传入到jsp页面,并且用EL表达式显示出值
方法一:通过id查询某一数据库表中具体的行,将值封装在相应的对象中,如下面的对象Notice servlet中 String noticeId=request.getParameter("n ...
- Ubuntu18.04下安装配置MongoDB4.0.6
搭建MongoDB环境 安装MongoDB 1.下载安装包 MongoDB 提供了 linux 各发行版本 64 位的安装包,你可以在官网下载安装包. 下载地址:https://www.mongodb ...
- Android破解学习之路(十五)—— 【Unity3D】洛菲斯的呼唤(Lophis roguelike)无限金币(道具)的实现 破解
前言 之前玩月圆之夜玩的挺high的,最近又找到了个与月圆之夜类似的卡牌游戏,游戏名为Lophis roguelike,中文翻译名洛菲斯的呼唤. 但是这个与月圆之夜有所不同,如果失败了,只能从开头重新 ...
- SpringBoot+MyBatis配置多数据源
SpringBoot 可以支持多数据源,这是一个非常值得学习的功能,但是从现在主流的微服务的架构模式中,每个应用都具有唯一且准确的功能,多数据源的需求很难用到,考虑到实际情况远远比理论复杂的多,这里还 ...
- .Net Core 在Linux服务器下部署程序--(3). 部署.net Core程序
确认第二步中的软件已安装完成 lrzsz文件上传下载软件 zip与unzip压缩包软件 net core 相关软件 确认上述软件安装完成之后,开始部署程序 创建部署文件夹 我的习惯是在usr文件夹下新 ...
- 简单shellcode编写
0x00 介绍 Shellcode 是指经过精心设计的一串指令,一旦注入正在运行的应用程序中即可运行,常用于栈和基于堆的溢出.术语Shellcode意思指的便是用于启动一个命令Shell的已编写好的可 ...
- url获取整理
$_SERVER['DOCUMENT_ROOT']; //网站的根目录 echo $_SERVER['SERVER_NAME']; //当前的服务器域名 echo $_SERVER['HTTP_H ...
- RocketMQ4.3.X关于设置useEpollNativeSelector = true报错问题
前一阵子刚整理完RocketMQ4.3.x版本的相关配置的工作,接下来就来测试一下改变参数会带来什么好的结果 首先我就选中了useEpollNativeSelector 这个参数 默认这个参数是 fa ...
- Node.js在指定的图片模板上生成二维码图片并附带底部文字说明
在Node.js中,我们可以通过qr-image包直接在后台生成二维码图片,使用方法很简单: var qr = require('qr-image'); exports.createQRImage = ...
- 前端/C# 前后台交互文件上传、下载
试了很多方式,最终确认这个全面简单版的.废话不多说,贴码. 文件上传 input的type命名为file,即可实现文件上传.嗯~~~现在html还是很强大的.Good! 前端 单个文件上传 Html: ...