HAProxy+Keepalived高可用负载均衡
一 基础准备
1.1 部署环境及说明
|
主机名
|
主机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集群

1 [root@webapp1 ~]# yum -y install httpd
2 [root@webapp1 ~]# vi /var/www/html/index.html
3 This is my www.lz.com!
4 [root@webapp1 ~]# vi /var/www/html/index.html
5 This is my static.lz.com!
6 [root@webapp1 ~]# vi /var/www/html/index.html
7 This is my video.lz.com!
8 [root@webapp1 ~]# systemctl start httpd.service
9 [root@webapp1 ~]# systemctl enable httpd.service
10 [root@webapp1 ~]# systemctl stop firewalld.service
11 [root@webapp1 ~]# systemctl disable firewalld.service
12 [root@webapp1 ~]# vi /etc/selinux/config
13 SELINUX=disabled
14 [root@webapp1 ~]# setenforce 0 #关闭SELinux及防火墙

三 基础NTP部署
3.1 NTP部署
1 [root@webapp1 ~]# yum -y install ntp
2 [root@webapp1 ~]# systemctl start ntpd.service
四 Keepalived部署
4.1 编译环境
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
1 [root@haproxy_master ~]# wget http://www.keepalived.org/software/keepalived-1.3.6.tar.gz
2 [root@haproxy_master ~]# tar -zxvf keepalived-1.3.6.tar.gz
3 [root@haproxy_master ~]# cd keepalived-1.3.6/
4 [root@lvsmaster keepalived-1.3.6]# ./configure --prefix=/usr/local/keepalived
5 [root@haproxy_master keepalived-1.3.6]# make && make install
4.3 添加Keepalived启动相关服务

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

4.4 配置Keepalived

1 [root@haproxy_master ~]# vi /etc/keepalived/keepalived.conf
2 global_defs {
3 notification_email {
4 #……
5 }
6 notification_email_from Alexandre.Cassen@firewall.loc
7 smtp_server 192.168.200.1
8 smtp_connect_timeout 30
9 router_id LVS_DEVEL
10 }
11
12 vrrp_script check_haproxy {
13 script "/usr/bin/killall -0 haproxy"
14 interval 2
15 weight 21
16 }
17
18 vrrp_instance HAProxy_HA {
19 state BACKUP #在HAProxy主备均设置为BACKUP
20 interface eth0
21 virtual_router_id 80
22 priority 100
23 advert_int 2
24 nopreempt #不抢占模式
25 authentication {
26 auth_type PASS
27 auth_pass 1111
28 }
29
30 notify_master "/etc/keepalived/master.sh"
31 notify_backup "/etc/keepalived/backup.sh"
32 notify_fault "/etc/keepalived/fault.sh"
33
34 track_script {
35 check_haproxy
36 }
37
38 virtual_ipaddress {
39 172.24.8.100 dev eth0
40 }
41 }

4.5 编写Keepalived脚本

1 [root@haproxy_master ~]# vi /etc/keepalived/master.sh
2 #!/bin/bash
3 LOGFILE=/var/log/keepalived-mysql-state/log
4 date >>$LOGFILE
5 echo "[Master]" >>$LOGFILE
6 [root@haproxy_master ~]# vi /etc/keepalived/backup.sh
7 #!/bin/bash
8 LOGFILE=/var/log/keepalived-mysql-state/log
9 date >>$LOGFILE
10 echo "[BACKUP]" >>$LOGFILE
11 [root@haproxy_master ~]# vi /etc/keepalived/fault.sh
12 #!/bin/bash
13 LOGFILE=/var/log/keepalived-mysql-state/log
14 date >>$LOGFILE
15 echo "[FAULT]" >>$LOGFILE
16 [root@haproxy_master ~]# chmod u+x /etc/keepalived/backup.sh
17 [root@haproxy_master ~]# chmod u+x /etc/keepalived/master.sh
18 [root@haproxy_master ~]# chmod u+x /etc/keepalived/fault.sh

4.5 Bakcup节点配置
1 [root@haproxy_master ~]# scp /etc/keepalived/keepalived.conf 172.24.8.11:/etc/keepalived/keepalived.conf #将配置好的Master节点的配置文件复制到Backup节点
2 [root@haproxy_slave ~]# vi /etc/keepalived/keepalived.conf
3 state BACKUP
4 priority 80
1 [root@haproxy_master ~]# scp /etc/keepalived/*.sh 172.24.8.11:/etc/keepalived/
2 #将对应的脚本也复制至backup节点。
五 HAProxy部署
5.1 HAProxy安装
1 [root@haproxy_master ~]# yum -y install haproxy
5.2 HAProxy配置

1 [root@haproxy_master ~]# vi /etc/haproxy/haproxy.cfg
2 global
3 log 127.0.0.1 local0 info
4 chroot /var/lib/haproxy
5 pidfile /var/run/haproxy.pid
6 maxconn 4096
7 user haproxy
8 group haproxy
9 daemon
10 nbproc 1
11 defaults
12 mode http
13 log global
14 retries 3
15 timeout connect 5s
16 timeout client 30s
17 timeout server 30s
18 timeout check 2s
19 frontend www
20 bind 172.24.8.100:80
21 mode http
22 option httplog
23 option forwardfor
24 log global
25
26 acl host_www hdr_dom(host) -i www.lz.com #配置不同域名分发不同后端策略
27 acl host_static hdr_dom(host) -i static.lz.com
28 acl host_video hdr_dom(host) -i video.lz.com
29
30 use_backend server_www if host_www #配置不同域名分发不同后端策略
31 use_backend server_static if host_static
32 use_backend server_video if host_video
33 backend server_www #后端真是服务器
34 mode http
35 option redispatch
36 option abortonclose
37 balance roundrobin
38 option httpchk GET /index.html
39 server webapp1 172.24.8.30:80 weight 6 check inter 2000 rise 2 fall 3
40 backend server_static #后端真是服务器
41 mode http
42 option redispatch
43 option abortonclose
44 balance roundrobin
45 option httpchk GET /index.html
46 server webapp2 172.24.8.31:80 weight 6 check inter 2000 rise 2 fall 3
47 backend server_video #后端真是服务器
48 mode http
49 option redispatch
50 option abortonclose
51 balance roundrobin
52 option httpchk GET /index.html
53 server webapp3 172.24.8.32:80 weight 6 check inter 2000 rise 2 fall 3
54 [root@haproxy_master ~]# scp /etc/haproxy/haproxy.cfg root@172.24.8.11:/etc/haproxy/haproxy.cfg #将配置文件复制至HAProxy备节点

5.3 打开转发
1 [root@haproxy_master ~]# vi /etc/sysctl.conf
2 net.ipv4.ip_nonlocal_bind = 1
3 [root@haproxy_master ~]# sysctl -p
六 启动服务
1 [root@webapp1 ~]# systemctl start httpd
1 [root@haproxy_master ~]# service haproxy start
1 [root@haproxy_master ~]# service keepalived start
七 验证测试
7.1 高可用验证
1 [root@haproxy_master ~]# ip add

1 [root@haproxy_master ~]# service haproxy stop #停止HAProxy主节点的HAProxy进程
2 [root@haproxy_master ~]# tail -f /var/log/messages #观察HAProxy主节点日志

1 [root@haproxy_slave ~]# ip addr #查看备HAProxy节点的IP

1 [root@haproxy_master ~]# service haproxy start

7.2 负载均衡测试
1 172.24.8.100 www.lz.com
2 172.24.8.100 static.lz.com
3 172.24.8.100 video.lz.com



HAProxy+Keepalived高可用负载均衡的更多相关文章
- 案例一(haproxy+keepalived高可用负载均衡系统)【转】
1.搭建环境描述: 操作系统: [root@HA-1 ~]# cat /etc/redhat-release CentOS release 6.7 (Final) 地址规划: 主机名 IP地址 集群角 ...
- HAProxy+Keepalived 高可用负载均衡
转自 https://www.jianshu.com/p/95cc6e875456 Keepalived+haproxy实现高可用负载均衡 Master backup vip(虚拟IP) 192.16 ...
- 基于HAProxy+Keepalived高可用负载均衡web服务的搭建
一 原理简介 1.HAProxyHAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web ...
- 005.HAProxy+Keepalived高可用负载均衡
一 基础准备 1.1 部署环境及说明 系统OS:CentOS 6.8 64位 HAProxy软件:HA-Proxy version 1.5.18 Keepalived软件:keepalived-1.3 ...
- 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 ...
- 测试LVS+Keepalived高可用负载均衡集群
测试LVS+Keepalived高可用负载均衡集群 1. 启动LVS高可用集群服务 此时查看Keepalived服务的系统日志信息如下: [root@localhost ~]# tail -f /va ...
- LVS+Keepalived高可用负载均衡集群架构实验-01
一.为什么要使用负载均衡技术? 1.系统高可用性 2. 系统可扩展性 3. 负载均衡能力 LVS+keepalived能很好的实现以上的要求,LVS提供负载均衡,keepalived提供健康检查, ...
- 使用Ansible实现nginx+keepalived高可用负载均衡自动化部署
本篇文章记录通过Ansible自动化部署nginx的负载均衡高可用,前端代理使用nginx+keepalived,端web server使用3台nginx用于负载效果的体现,结构图如下: 部署前准备工 ...
- Keepalived+HAProxy 搭建高可用负载均衡
转载自:https://mp.weixin.qq.com/s/VebiWftaRa26x1aA21Jqww 1. 概述 软件负载均衡技术是指可以为多个后端服务器节点提供前端IP流量分发调度服务的软件技 ...
随机推荐
- Java自学-操作符 三元操作符
Java的三元操作符 三元操作符 ?: 示例 1 : 三元操作符 语法:表达式?值1:值2 如果表达式为真 返回值1 如果表达式为假 返回值2 public class HelloWorld { pu ...
- 长期作业:web框架源码剖析
Tornado框架 1.1. 手动安装 1.2. 从简单的开始:分析红框部分的源码 Django框架
- poll_wait阻塞/唤醒
1. 应用阻塞 应用程序使用 select() 或 poll() 调用设备驱动程序的 poll() 函数,该函数把输入输出复用处理的等待队列追加到由内核管理的进程的 poll_table()上 #in ...
- 我的oracle 健康检查报告
最近一直想用sql来生成oracle的健康检查报告,这样看起来一目了然,经过网上搜资料加自己整理终于算是成型了,部分结果如下图所示, 具体参考附件,恳请广大网友看看是否还有需要添加的地方. DB_he ...
- java实现mysql数据备份
/** * @param hostIP ip地址,可以是本机也可以是远程 * @param userName 数据库的用户名 * @param password 数据库的密码 * @param sav ...
- 【Docker】docker安装GitLab
一.下载镜像 docker pull gitlab/gitlab-ce 二.运行GitLab容器 1.生成启动文件 - start.sh 使用docker命令运行容器,注意修改hostname为自己喜 ...
- CentOS7安装MySQL5.7及Tomcat8.5
在CentOS7服务器上部署FR项目应用 一.安装CentOS-7_x86_64 1.CentOS7:带GUI的服务器(FTP服务器.JAVA平台.兼容性程序库.开发工具.安全性工具.系统管理工具): ...
- VLAN实验5:利用三层交换机实现VLAN间路由
实验环境: 实验拓扑图: 实验编址: 实验步骤:1.基本配置按照实验编址表在PC上进行基本的IP地址配置,三层交换机上先不做任何配置. 测试PC1与PC2的连通性 正常 测试PC1与PC3的连通性 ...
- 【MySQL】FIND_IN_SET、LIKE、IN的区别
现在有张新闻表,里面有新闻名称name字段,有新闻类型type字段,1代表头条,2代表推荐,11代表热点,22代表最新,现在表中有两条记录,存储形式如下,现在的需求是查找头条新闻,及type中包含1的 ...
- lock in share mode 和 select for update
lock in share mode 和 select for update 2018年07月11日 01:57:58 道不虚行只在人 阅读数 146 版权声明:欢迎转载,请注明出处 https ...