一 基础准备

1.1 部署环境及说明

系统OS:CentOS 6.8 64位
HAProxy软件:HA-Proxy version 1.5.18
Keepalived软件:keepalived-1.3.6.tar.gz
官方链接:http://www.haproxy.org/ (国内可能无法打开)
下载连接:http://pkgs.fedoraproject.org/repo/pkgs/haproxy/
部署说明:当用户访问对应的域名时,HAProxy能将请求发送到对应的后端主机上,同时当主HAProxy服务器发生故障后,能立刻将负载均衡服务切换到备用HAProxy服务器上。
主机名
主机IP地址
集群角色
虚机IP/域名
master
172.24.8.10
主HAProxy服务器
172.24.8.100
backup
172.24.8.11
备HAProxy服务器
webapp1
172.24.8.30
后端web服务器
www.lz.com
webapp2
172.24.8.31
static.lz.com
webapp3
172.24.8.32
video.lz.com

1.2 架构规划

二 后端httpd集群部署

2.1 部署httpd集群

 [root@webapp1 ~]# yum -y install httpd
[root@webapp1 ~]# vi /var/www/html/index.html
This is my www.lz.com!
[root@webapp1 ~]# vi /var/www/html/index.html
This is my static.lz.com!
[root@webapp1 ~]# vi /var/www/html/index.html
This is my video.lz.com!
[root@webapp1 ~]# systemctl start httpd.service
[root@webapp1 ~]# systemctl enable httpd.service
[root@webapp1 ~]# systemctl stop firewalld.service
[root@webapp1 ~]# systemctl disable firewalld.service
[root@webapp1 ~]# vi /etc/selinux/config
SELINUX=disabled
[root@webapp1 ~]# setenforce 0 #关闭SELinux及防火墙
 
注意:后端real server节点都需要安装,本环境针对httpd简单安装即可,无需过多配置。

三 基础NTP部署

3.1 NTP部署

 [root@webapp1 ~]# yum -y install ntp
[root@webapp1 ~]# systemctl start ntpd.service
 
建议:替换附件中的ntp配置文件,建议采用阿里云时钟进行同步。
注意:为了保证集群的稳定性,强烈建议在所有节点均部署NTP同步服务,保证所有时钟一致。

四 Keepalived部署

4.1 编译环境

安装基础环境及依赖:
 # yum -y install gcc gcc-c++ make kernel-devel kernel-tools kernel-tools-libs kernel libnl libnl-devel libnfnetlink-devel openssl-devel wget openssh-clients

4.2 安装Keepalived

 [root@haproxy_master ~]# wget http://www.keepalived.org/software/keepalived-1.3.6.tar.gz
[root@haproxy_master ~]# tar -zxvf keepalived-1.3.6.tar.gz
[root@haproxy_master ~]# cd keepalived-1.3.6/
[root@lvsmaster keepalived-1.3.6]# ./configure --prefix=/usr/local/keepalived
[root@haproxy_master keepalived-1.3.6]# make && make install
 
注意:CentOS6.8安装高于1.3.6版本会出现未知错误。

4.3 添加Keepalived启动相关服务

 [root@haproxy_master ~]# mkdir /etc/keepalived
[root@haproxy_master ~]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
[root@haproxy_master ~]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@haproxy_master ~]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
[root@haproxy_master ~]# vi /etc/init.d/keepalived #创建Keepalived启动脚本,见附件
[root@haproxy_master ~]# chmod u+x /etc/rc.d/init.d/keepalived
 

4.4 配置Keepalived

 [root@haproxy_master ~]# vi /etc/keepalived/keepalived.conf
global_defs {
notification_email {
#……
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
} vrrp_script check_haproxy {
script "/usr/bin/killall -0 haproxy"
interval 2
weight 21
} vrrp_instance HAProxy_HA {
state BACKUP #在HAProxy主备均设置为BACKUP
interface eth0
virtual_router_id 80
priority 100
advert_int 2
nopreempt #不抢占模式
authentication {
auth_type PASS
auth_pass 1111
} notify_master "/etc/keepalived/master.sh"
notify_backup "/etc/keepalived/backup.sh"
notify_fault "/etc/keepalived/fault.sh" track_script {
check_haproxy
} virtual_ipaddress {
172.24.8.100 dev eth0
}
}
 

4.5 编写Keepalived脚本

 [root@haproxy_master ~]# vi /etc/keepalived/master.sh
#!/bin/bash
LOGFILE=/var/log/keepalived-mysql-state/log
date >>$LOGFILE
echo "[Master]" >>$LOGFILE
[root@haproxy_master ~]# vi /etc/keepalived/backup.sh
#!/bin/bash
LOGFILE=/var/log/keepalived-mysql-state/log
date >>$LOGFILE
echo "[BACKUP]" >>$LOGFILE
[root@haproxy_master ~]# vi /etc/keepalived/fault.sh
#!/bin/bash
LOGFILE=/var/log/keepalived-mysql-state/log
date >>$LOGFILE
echo "[FAULT]" >>$LOGFILE
[root@haproxy_master ~]# chmod u+x /etc/keepalived/backup.sh
[root@haproxy_master ~]# chmod u+x /etc/keepalived/master.sh
[root@haproxy_master ~]# chmod u+x /etc/keepalived/fault.sh
 
提示:本环境采用测试脚本,真实环境建议采用自动发送邮件通知运维员的脚本。

4.5 Bakcup节点配置

 [root@haproxy_master ~]# scp /etc/keepalived/keepalived.conf 172.24.8.11:/etc/keepalived/keepalived.conf    #将配置好的Master节点的配置文件复制到Backup节点
[root@haproxy_slave ~]# vi /etc/keepalived/keepalived.conf
state BACKUP
priority 80
 
注意:在HAProxy备节点也设置为BACKUP,priority修改为低于HAProxy主角色的优先级即可,同时去掉nopreempt。
 [root@haproxy_master ~]# scp /etc/keepalived/*.sh 172.24.8.11:/etc/keepalived/
#将对应的脚本也复制至backup节点。
 

五 HAProxy部署

5.1 HAProxy安装

 [root@haproxy_master ~]# yum -y install haproxy
提示:需要在主备HAProxy节点都安装。

5.2 HAProxy配置

 [root@haproxy_master ~]# vi /etc/haproxy/haproxy.cfg
global
log 127.0.0.1 local0 info
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4096
user haproxy
group haproxy
daemon
nbproc 1
defaults
mode http
log global
retries 3
timeout connect 5s
timeout client 30s
timeout server 30s
timeout check 2s
frontend www
bind 172.24.8.100:80
mode http
option httplog
option forwardfor
log global acl host_www hdr_dom(host) -i www.lz.com #配置不同域名分发不同后端策略
acl host_static hdr_dom(host) -i static.lz.com
acl host_video hdr_dom(host) -i video.lz.com use_backend server_www if host_www #配置不同域名分发不同后端策略
use_backend server_static if host_static
use_backend server_video if host_video
backend server_www #后端真是服务器
mode http
option redispatch
option abortonclose
balance roundrobin
option httpchk GET /index.html
server webapp1 172.24.8.30:80 weight 6 check inter 2000 rise 2 fall 3
backend server_static #后端真是服务器
mode http
option redispatch
option abortonclose
balance roundrobin
option httpchk GET /index.html
server webapp2 172.24.8.31:80 weight 6 check inter 2000 rise 2 fall 3
backend server_video #后端真是服务器
mode http
option redispatch
option abortonclose
balance roundrobin
option httpchk GET /index.html
server webapp3 172.24.8.32:80 weight 6 check inter 2000 rise 2 fall 3
[root@haproxy_master ~]# scp /etc/haproxy/haproxy.cfg root@172.24.8.11:/etc/haproxy/haproxy.cfg #将配置文件复制至HAProxy备节点
 

5.3 打开转发

 [root@haproxy_master ~]# vi /etc/sysctl.conf
net.ipv4.ip_nonlocal_bind = 1
[root@haproxy_master ~]# sysctl -p
 
注意:绑定非本机的IP必须在sysctl.conf文件中配置。

六 启动服务

 [root@webapp1 ~]# systemctl start httpd
提示:三个节点的httpd服务均启动。
 [root@haproxy_master ~]# service haproxy start
提示:必须先启动HAProxy服务,之后启动Keepalived,因为Keepalived会先检测HAProxy服务进程。
 [root@haproxy_master ~]# service keepalived start

七 验证测试

7.1 高可用验证

 [root@haproxy_master ~]# ip add
 [root@haproxy_master ~]# service haproxy stop		#停止HAProxy主节点的HAProxy进程
[root@haproxy_master ~]# tail -f /var/log/messages #观察HAProxy主节点日志
 
 [root@haproxy_slave ~]# ip addr				#查看备HAProxy节点的IP
结论:通过测试可知当主HAProxy节点服务异常,Keepalived会检测到,同时HAProxy会将vip从主节点移除,备HAProxy会接管。
 [root@haproxy_master ~]# service haproxy start
结论:由于配置了非抢占模式,主HAProxy恢复进程之后,依旧由备HAProxy提供服务,vip不会切回至主HAProxy。

7.2 负载均衡测试

主机hosts中添加如下解析:
 172.24.8.100	www.lz.com
172.24.8.100 static.lz.com
172.24.8.100 video.lz.com
 
浏览器分别访问不用的三个域名:
 
 
 
 

005.HAProxy+Keepalived高可用负载均衡的更多相关文章

  1. 案例一(haproxy+keepalived高可用负载均衡系统)【转】

    1.搭建环境描述: 操作系统: [root@HA-1 ~]# cat /etc/redhat-release CentOS release 6.7 (Final) 地址规划: 主机名 IP地址 集群角 ...

  2. HAProxy+Keepalived 高可用负载均衡

    转自 https://www.jianshu.com/p/95cc6e875456 Keepalived+haproxy实现高可用负载均衡 Master backup vip(虚拟IP) 192.16 ...

  3. 基于HAProxy+Keepalived高可用负载均衡web服务的搭建

    一 原理简介 1.HAProxyHAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web ...

  4. HAProxy+Keepalived高可用负载均衡

    一 基础准备 1.1 部署环境及说明 系统OS:CentOS 6.8 64位 HAProxy软件:HA-Proxy version 1.5.18 Keepalived软件:keepalived-1.3 ...

  5. Haproxy+Keepalived高可用负载均衡详细配置

    本文所使用的环境: 10.6.2.128    centos6.5 10.6.2.129    centos6.5 VIP  为10.6.2.150 要实现的目标: 实现10.6.2.128和10.6 ...

  6. 测试LVS+Keepalived高可用负载均衡集群

    测试LVS+Keepalived高可用负载均衡集群 1. 启动LVS高可用集群服务 此时查看Keepalived服务的系统日志信息如下: [root@localhost ~]# tail -f /va ...

  7. LVS+Keepalived高可用负载均衡集群架构实验-01

    一.为什么要使用负载均衡技术? 1.系统高可用性 2.  系统可扩展性 3.  负载均衡能力 LVS+keepalived能很好的实现以上的要求,LVS提供负载均衡,keepalived提供健康检查, ...

  8. 使用Ansible实现nginx+keepalived高可用负载均衡自动化部署

    本篇文章记录通过Ansible自动化部署nginx的负载均衡高可用,前端代理使用nginx+keepalived,端web server使用3台nginx用于负载效果的体现,结构图如下: 部署前准备工 ...

  9. Keepalived+HAProxy 搭建高可用负载均衡

    转载自:https://mp.weixin.qq.com/s/VebiWftaRa26x1aA21Jqww 1. 概述 软件负载均衡技术是指可以为多个后端服务器节点提供前端IP流量分发调度服务的软件技 ...

随机推荐

  1. 参数在一个线程中各个函数之间互相传递的问题(ThreadLocal)

    ThreadLocal最常用的地方就是为每个线程绑定一个数据库连接,HTTP请求,用户身份信息等,这样一个线程的所有调用到的处理函数都可以非常方便地访问这些资源. 一个ThreadLocal变量虽然是 ...

  2. python作业简单FTP(第七周)

    作业需求: 1. 用户登陆 2. 上传/下载文件 3. 不同用户家目录不同 4. 查看当前目录下文件 5. 充分使用面向对象知识 思路分析: 1.用户登陆保存文件对比用户名密码. 2.上传用json序 ...

  3. F - 回转寿司 (权值线段树)

    题目链接:https://cn.vjudge.net/contest/281960#problem/F 题目大意:中文题目 具体思路:权值线段树,我们每次寻找的是满足 (i<j)   L< ...

  4. SILC超像素分割算法详解(附Python代码)

    SILC算法详解 一.原理介绍 SLIC算法是simple linear iterative cluster的简称,该算法用来生成超像素(superpixel) 算法步骤: 已知一副图像大小M*N,可 ...

  5. Latex 公式居中

    这么简单的功能要是还要加工具包,LaTeX也不用混了~ 公式用\[...\]来写可以达到公式居中效果. 或者在equation环境外加center环境: \begin{center} \begin{e ...

  6. SpringBoot拦截器的注册

    (1).编写拦截器 package cn.coreqi.config; import org.springframework.util.StringUtils; import org.springfr ...

  7. STM32F103X datasheet学习笔记---Interrupts and events

    1.前言 本章主要介绍STM32中断和事件相关的内容 2.NVIC NVIC管理着包括内核异常等中断 主要特性 68个外部中断源(不包含16个内部中断线) 可编程优先级为16级 低延迟异常和中断处理 ...

  8. Python-HTML CSS 练习

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. vue系列之核心思想

    1.数据驱动 只要改变数据,Vuejs会通过Directives指令对DOM进行封装,当数据发生变化,会通知相应的DOM进行变化 Vuejs会对DOM进行监听,通过DOMListeners监听视图的变 ...

  10. SPLAY,LCT学习笔记(四)

    前三篇好像变成了SPLAY专题... 这一篇正式开始LCT! 其实LCT就是基于SPLAY的伸展操作维护树(森林)连通性的一个数据结构 核心操作有很多,我们以一道题为例: 例:bzoj 2049 洞穴 ...