Haproxy + Pacemaker负载均衡和高可用集群

一、 Haproxy负载均衡配置

实验环境:
redhat6.5
关闭红帽官方套件进程
三台虚拟机:
调度器:
172.25.32.1
后端服务器:
172.25.32.5
172.25.32.6

1.安装haproxy

下载haproxy-1.6.11.tar.gz
安装haproxy
1)安装rpm-build ,解压haproxy-1.6.11.tar.gz

[root@server1 ~]# yum  install rpm-build -y
[root@server1 ~]# tar zxf haproxy-1.6.11.tar.gz

2.切换到cd haproxy-1.6.11/examples/下,执行命令:

[root@server1 examples]# rpmbuild -bb haproxy.spec 

#  会报错
error: File /root/rpmbuild/SOURCES/haproxy-1.6.11.tar.gz: No such file or directory

# 复制安装包到/root/rpmbuild/SOURCES/
[root@server1 examples]# cp /root/haproxy-1.6.11.tar.gz /root/rpmbuild/SOURCES/

## 再次执行命令
[root@server1 examples]# rpmbuild -bb haproxy.spec 

3.切换目录,查询haproxy配置文件

Haproxy + Pacemaker负载均衡和高可用集群_第1张图片

4.安装haproxy-1.6.11-1.x86_64.rpm

Haproxy + Pacemaker负载均衡和高可用集群_第2张图片
这里写图片描述

5.切换到cd haproxy-1.6.11/examples/下,复制配置文件

Haproxy + Pacemaker负载均衡和高可用集群_第3张图片

6.添加haproxy用户

这里写图片描述

7.修改配置文件

Haproxy + Pacemaker负载均衡和高可用集群_第4张图片
Haproxy + Pacemaker负载均衡和高可用集群_第5张图片

8.修改 /etc/security/limits.conf 对服务做限制

这里写图片描述

9.启动服务

这里写图片描述

10.访问http://172.25.32.1 http://172.25.32.1/monitoruri http://172.25.32.1/stats 监控页面

这里写图片描述
Haproxy + Pacemaker负载均衡和高可用集群_第6张图片
Haproxy + Pacemaker负载均衡和高可用集群_第7张图片
Haproxy + Pacemaker负载均衡和高可用集群_第8张图片

11.修改日志位置(/etc/rsyslog.conf)

接受日志文件:
这里写图片描述
修改第42行,如下图:
这里写图片描述
为服务配置日志存储位置,如下图
这里写图片描述

12.认证登陆监控页面(/etc/haproxy/haproxy.cfg)

在默认配置(defaults)中添加 stats auth admin:westos
Haproxy + Pacemaker负载均衡和高可用集群_第9张图片

13.Haproxy算法

修改配置文件
Haproxy + Pacemaker负载均衡和高可用集群_第10张图片
balance source 根据请求源ip,连接到主机后不断开,一直访问首先连接的主机

172.25.32.1:8080 作为备机 端口不能和其他服务重复

修改http端口为8080
这里写图片描述
这里写图片描述
重新加载服务后,只会访问到172.25.32.5的页面
Haproxy + Pacemaker负载均衡和高可用集群_第11张图片
server1,作为备机,当server5 server6 都挂掉,访问server1
这里写图片描述

14.拒绝用户访问

修改配置文件 acl : 加规则 src 源 src-port 源地址 dest 目标
Haproxy + Pacemaker负载均衡和高可用集群_第12张图片
重新加载配置文件
这里写图片描述
访问
Haproxy + Pacemaker负载均衡和高可用集群_第13张图片
第一种方法: 页面不够友好,修改配置文件,判断客户端是否在黑名单中,在的话,把错误显示重定向为172.25.32.1的默认发布页面
Haproxy + Pacemaker负载均衡和高可用集群_第14张图片
重新加载,访问

这里写图片描述第二种方法: 页面不够友好,修改配置文件,直接把错误显示重定向为172.25.32.1的默认发布页面
Haproxy + Pacemaker负载均衡和高可用集群_第15张图片
配置文件,blacklist可以自定义设置

重新加载,访问
这里写图片描述*

15.动静分离,根据需求访问不同页面

修改配置文件
Haproxy + Pacemaker负载均衡和高可用集群_第16张图片
Haproxy + Pacemaker负载均衡和高可用集群_第17张图片
后端服务器server5开启http服务,并设置index.php;server6开启http服务,并设置index.html
server6
这里写图片描述
server5
Haproxy + Pacemaker负载均衡和高可用集群_第18张图片
重启haproxy服务,访问172.25.32.1 和 172.25.32.1/index.php
这里写图片描述
Haproxy + Pacemaker负载均衡和高可用集群_第19张图片

16.读写分离

编辑配置文件
172.25.32.5 动态 172.25.32.6 静态
Haproxy + Pacemaker负载均衡和高可用集群_第20张图片
Haproxy + Pacemaker负载均衡和高可用集群_第21张图片
重载服务

后端服务器

server5
在/var/www/html/下,编写两个脚本文件(index.php,upload_file.php),创建upload目录,给upload目录777权限

[root@tun-server html]# chmod 777 upload/

[root@tun-server html]# ls
index.html  index.php  upload  upload_file.php

[root@tun-server html]# ll
total 16
-rw-r--r-- 1 root root   17 Jun 26 11:23 index.html
-rw-r--r-- 1 root root  257 Apr 16  2016 index.php
drwxrwxrwx 2 root root 4096 Jun 27 12:55 upload
-rw-r--r-- 1 root root  927 Apr 16  2016 upload_file.php

脚本文件upload_file.php,上传文件大小为2M
Haproxy + Pacemaker负载均衡和高可用集群_第22张图片
Server6做同样操作

客户端访问:

Haproxy + Pacemaker负载均衡和高可用集群_第23张图片
Haproxy + Pacemaker负载均衡和高可用集群_第24张图片
Haproxy + Pacemaker负载均衡和高可用集群_第25张图片
查看后端服务器upload目录:
Server5:
这里写图片描述
Server6:
这里写图片描述
Server5中有上传图片,server6中没有,则成功

二、Pacemaker高可用集群

1.pacemaker

pacemaker是一个开源的高可用资源管理器(CRM),位于HA集群架构中资源管理、资源代理(RA)这个层次,它不能提供底层心跳信息传递的功能,要想与对方节点通信需要借助底层的心跳传递服务,将信息通告给对方。(作为通信层和提供关系管理服务,心跳引擎,检测心跳信息)

2.Corosync

Corosync是集群管理套件的一部分,它在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等。

实验环境:
关闭红帽官方套件服务
四台虚拟机: 两台安装pacemaker + corosync

调度器配置

下载服务网址:www.linux-ha.org

Server1

1.安装pacemaker + corosync server4做同样操作

[root@server1 haproxy]# yum install corosync pacemaker -y

2.修改配置文件

[root@server1 ~]# vim /etc/corosync/corosync.conf
# Please read the corosync.conf.5 manual page
compatibility: whitetank

totem { ##totem定义集群内各节点间是怎么通信的,totem本是一种协议,专用于corosync专用于各节点间的协议
        version: 2    ##totem的版本,不可更改
        secauth: off    ##安全认证
        threads: 0    ##用于安全认证开启的并线程数
        interface {
                ringnumber: 0    ##回环号码
                bindnetaddr: 172.25.32.0     ##绑定心跳网段,corosync会自动判断本地网卡上配置的哪个ip地址是属于这个网络的,并把这个接口作为多播心跳信息传递的接口
                mcastaddr: 226.94.1.32    ##心跳信息组播地址,每个节点的组播地址必须为同一个
                mcastport: 5405    ##组播时使用的端口
                ttl: 1     ##组播时使用的端口##只向外一跳心跳信息,避免组播报文回路 
        }
}

logging {
        fileline: off    ##指定要打印的行
        to_stderr: no     ##日志信息是否发往错误输出(默认否)
        to_logfile: yes    ##是否记录日志文件
        to_syslog: yes     ##是否记录日志文件##是否记录于syslog日志-->此类日志记录于/var/log/message中
        logfile: /var/log/cluster/corosync.log    ##日志存放位置
        debug: off   ##只要不是为了排错,最好关闭debug,它记录的信息过于详细,会占用大量的磁盘IO.
        timestamp: on    ##是否打印时间戳,利于定位错误,但会产生大量系统调用,消耗CPU资源
        logger_subsys {
                subsys: AMF
                debug: off
        }
}

amf {
        mode: disabled
}
##如果想让pacemaker在corosync中以插件方式启动,需要 在corosync.conf文件中加上如下内容:
service {
        name:pacemaker  ## 模块名,启动corosync时同时启动pacemaker
        ver:0
}

Haproxy + Pacemaker负载均衡和高可用集群_第26张图片

3.安装 crmsh-1.2.6-0.rc2.2.1.x86_64.rpm pssh-2.3.1-2.1.x86_64.rpm -y

[root@server1 ~]# yum install crmsh-1.2.6-0.rc2.2.1.x86_64.rpm pssh-2.3.1-2.1.x86_64.rpm -y

4.开启服务 (server4也开启服务)

5.检测是否有错误,

Haproxy + Pacemaker负载均衡和高可用集群_第27张图片

6.安装haproxy (但不要开启服务),server4 同样操作

7.进入crm

crm基本命令

crm命令进入交互式shell
进入configure,执行show我们就可以看到配置文件的内容
show 显示配置文件
delete删除错误的资源
commit提交

Haproxy + Pacemaker负载均衡和高可用集群_第28张图片


查看配置文件

Haproxy + Pacemaker负载均衡和高可用集群_第29张图片

关闭fence机制,因为在这里我们还没有对fence进行配置,先将stonith-enabled 设置为 false,表示资源不会迁移

Haproxy + Pacemaker负载均衡和高可用集群_第30张图片

添加vip

添加vip资源,params 指定参数 op monitor 监控配置,interval指定执行操作的频率,单位:秒
stop vip ##首先停掉资源,当资源在使用时是无法对他进行改动的
进入configure执行delete
commit ##执行后一定要提交
Haproxy + Pacemaker负载均衡和高可用集群_第31张图片
Haproxy + Pacemaker负载均衡和高可用集群_第32张图片

我们在这里重新设置为ignore做实验,这时即使一个节点挂掉了,另一个节点也会正常工作

crm(live)configure# property no-quorum-policy=ignore
crm(live)configure# commit

由于我们的corosync默认是启用stonith功能的,但是我们这里没有stonith设备,如果我们直接去配置资源的话,由于没有stonith功能,所以资源的切换并不会完成,所以要禁用stonith功能,现在我们的环境no-quorum-policy没有设置为ignore,在这种情况下,如果一个节点down掉,这个集群就无法正常工作,因为默认对集群有健康检查,如果节点数小于2,便认为无法组成集群,该集群也就无法工作了。

添加服务,并把vip 和haproxy 放到一个组

这里写图片描述

[root@server1 ~]# crm node standby 
## 将所有资源从节点上移走,执行此命令后我们会看到,server3接替了server2的工作
[root@server1 ~]# crm node online 
## 在这里要注意,当server1节点online后,节点间不会进行回切,这样避免了因资源接管导致的资源丢失

Haproxy + Pacemaker负载均衡和高可用集群_第33张图片

[root@server1 ~]# crm_mon
crm_mon   ##在server上执行该命令监控节点状态的变化

Haproxy + Pacemaker负载均衡和高可用集群_第34张图片
Haproxy + Pacemaker负载均衡和高可用集群_第35张图片

查看fence的配置,必须有fence_xvm ,server4 做同样操作

Haproxy + Pacemaker负载均衡和高可用集群_第36张图片

开启fence机制,将stonith-enabled 设置为true,表示资源会迁移

crm(live)configure# property stonith-enabled=true

为集群添加fence_xvm

这里写图片描述
删除vmfence
Haproxy + Pacemaker负载均衡和高可用集群_第37张图片

添加vmfence
这里写图片描述
Haproxy + Pacemaker负载均衡和高可用集群_第38张图片

查询节点状态的变化(crm_mon)

Haproxy + Pacemaker负载均衡和高可用集群_第39张图片

破坏server4内核,实验效果为server4自动重启

这里写图片描述

crm_mon ##在server上执行该命令监控节点状态的变化

Haproxy + Pacemaker负载均衡和高可用集群_第40张图片

启动server4上corosync服务

这里写图片描述

查看节点状态

Haproxy + Pacemaker负载均衡和高可用集群_第41张图片

你可能感兴趣的:(Haproxy + Pacemaker负载均衡和高可用集群)