实验环境:
redhat6.5
关闭红帽官方套件进程
三台虚拟机:
调度器:
172.25.32.1
后端服务器:
172.25.32.5
172.25.32.6
下载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
接受日志文件:
修改第42行,如下图:
为服务配置日志存储位置,如下图
在默认配置(defaults)中添加 stats auth admin:westos
修改配置文件
balance source 根据请求源ip,连接到主机后不断开,一直访问首先连接的主机
172.25.32.1:8080 作为备机 端口不能和其他服务重复
修改http端口为8080
重新加载服务后,只会访问到172.25.32.5的页面
server1,作为备机,当server5 server6 都挂掉,访问server1
修改配置文件 acl : 加规则 src 源 src-port 源地址 dest 目标
重新加载配置文件
访问
第一种方法: 页面不够友好,修改配置文件,判断客户端是否在黑名单中,在的话,把错误显示重定向为172.25.32.1的默认发布页面
重新加载,访问
第二种方法: 页面不够友好,修改配置文件,直接把错误显示重定向为172.25.32.1的默认发布页面
配置文件,blacklist可以自定义设置
修改配置文件
后端服务器server5开启http服务,并设置index.php;server6开启http服务,并设置index.html
server6
server5
重启haproxy服务,访问172.25.32.1 和 172.25.32.1/index.php
编辑配置文件
172.25.32.5 动态 172.25.32.6 静态
重载服务
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
Server6做同样操作
查看后端服务器upload目录:
Server5:
Server6:
Server5中有上传图片,server6中没有,则成功
pacemaker是一个开源的高可用资源管理器(CRM),位于HA集群架构中资源管理、资源代理(RA)这个层次,它不能提供底层心跳信息传递的功能,要想与对方节点通信需要借助底层的心跳传递服务,将信息通告给对方。(作为通信层和提供关系管理服务,心跳引擎,检测心跳信息)
Corosync是集群管理套件的一部分,它在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等。
实验环境:
关闭红帽官方套件服务
四台虚拟机: 两台安装pacemaker + corosync
下载服务网址:www.linux-ha.org
Server1
[root@server1 haproxy]# yum install corosync pacemaker -y
[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
}
[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
crm基本命令
crm命令进入交互式shell
进入configure,执行show我们就可以看到配置文件的内容
show 显示配置文件
delete删除错误的资源
commit提交
添加vip资源,params 指定参数 op monitor 监控配置,interval指定执行操作的频率,单位:秒
stop vip ##首先停掉资源,当资源在使用时是无法对他进行改动的
进入configure执行delete
commit ##执行后一定要提交
crm(live)configure# property no-quorum-policy=ignore
crm(live)configure# commit
由于我们的corosync默认是启用stonith功能的,但是我们这里没有stonith设备,如果我们直接去配置资源的话,由于没有stonith功能,所以资源的切换并不会完成,所以要禁用stonith功能,现在我们的环境no-quorum-policy没有设置为ignore,在这种情况下,如果一个节点down掉,这个集群就无法正常工作,因为默认对集群有健康检查,如果节点数小于2,便认为无法组成集群,该集群也就无法工作了。
[root@server1 ~]# crm node standby
## 将所有资源从节点上移走,执行此命令后我们会看到,server3接替了server2的工作
[root@server1 ~]# crm node online
## 在这里要注意,当server1节点online后,节点间不会进行回切,这样避免了因资源接管导致的资源丢失
[root@server1 ~]# crm_mon
crm_mon ##在server上执行该命令监控节点状态的变化
crm(live)configure# property stonith-enabled=true