Coreosync在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等。它是一个新兴的软件,2008年推出,但其实它并不是一 个真正意义上的新软件,在2002年的时候有一个项目Openais它由于过大,分裂为两个子项目,其中可以实现HA心跳信息传输的功能就是 Corosync ,它的代码60%左右来源于Openais. Corosync可以提供一个完整的HA功能,但是要实现更多,更复杂的功能,那就需要使用Openais了。Corosync是未来的发展方向。在以后 的新项目里,一般采用Corosync,而hb_gui可以提供很好的HA管理功能,可以实现图形化的管理。另外相关的图形化有RHCS的套件 luci+ricci.
Nginx (engine x) 是一个高性能的 HTTP 和反向代理服务,也是一个 IMAP/POP3/SMTP 服务。
Nginx 是由伊戈尔·赛索耶夫为俄罗斯访问量第二的 Rambler.ru 站点(俄文:Рамблер)开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。其将源代码以类 BSD 许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011 年 6 月 1 日,nginx 1.0.4 发布。Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个 BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上 nginx 的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用 nginx 网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
实验环境:
server2: ip:172.25.61.2
server3: ip:172.25.61.3
server5: ip:172.25.61.6
server6: ip:172.25.61.6
server5,server6 上搭建 pacemaker+cororync 高可用集群,安装 nginx 实现负载均衡
server5、server6:
tar zxf nginx-1.14.0.tar.gz
vim nginx-1.14.0/auto/cc/gcc
#CFLAGS="$CFLAGS -g" ##将 172 行注释掉可以取消 debug 模式减小编译后的文件大小
vim nginx-1.14.0/src/core/nginx.h
#define NGINX_VER "nginx/"
yum install gcc pcre-devel openssl-devel -y
cd nginx-1.14.0
./configure --prefix=/usr/local/nginx --with-http_ssl_module
--with-http_stub_status_module --with-threads --with-file-aio
make
make install
ln -s /usr/local/nginx/sbin/nginx /sbin/
nginx -t ##语法检查
nginx
##开启 nginx
访问server5
cd /usr/local/nginx/conf/
vim nginx.conf
http {
upstream westos { ##添加upstream模块
server 172.25.20.2:80; ##实际访问的服务
server 172.25.20.3:80;
}
server { ##添加服务
listen 80;
server_name www.westos.com; ##修改server_name
location / {
proxy_pass http://westos; ##所有访问www.westos.com的客户,nginx会去westos下的服务器取得访问结果,返回给客户
}
}
}
nginx -s stop
nginx
访问www.westos.com ,需要在进行访问的主机上作本地解析
vim /etc/init.d/nginx
##需要从 nginx 官网下载 nginx 脚本,并作修改
chmod 755 /etc/init.d/nginx
yum install pacemaker corosync -y
cd /etc/corosync/
vim corosync.conf
interface {
ringnumber: 0
bindnetaddr: 172.25.20.0
mcastaddr: 226.94.20.1
mcastport: 5405
ttl: 1
}
service {
name: pacemaker
var: 0
}
/etc/init.d/pacemaker start
/etc/init.d/corosync start
yum install pssh-2.3.1-2.1.x86_64.rpm crmsh-1.2.6-0.rc2.2.1.x86_64.rpm -y
crm_verify -LV
crm configure property stonith-enabled=false
crm configure property no-quorum-policy="ignore"
crm configure primitive vip ocf:heartbeat:IPaddr2 \
params ip="172.25.61.100" cidr_netmask="24" \
op monitor interval="1min"
crm configure primitive nginx1 lsb:nginx \
op monitor interval="1min"
crm configure group nginxgroup vip nginx1
crm configure commit
crm_mon
Server2、Server3 上要安装 apache 或 nginx 服务,并进行相应配置
测试:
nginx的调度算法:
Round Robin ##默认使用轮循算法
upstream westos {
server 172.25.20.2:80;
server 172.25.20.3:80;
}
upstream westos {
least_conn;
server 172.25.20.2:80;
server 172.25.20.3:80;
}
IP Hash ##同一个客户会持续访问一个服务器上的内容
upstream westos {
ip_hash;
server 172.25.20.2:80;
server 172.25.20.3:80;
}
Least Time ##最短时间
upstream backend {
least_time header;
server 172.25.20.2:80;
server 172.25.20.3:80;
}
Random ##随机
upstream backend {
random two least_time=last_byte;
server 172.25.20.2:80;
server 172.25.20.3:80;
}
Server Weights
upstream backend {
server 172.25.20.2:80 weight=5; ##定义权值
server 172.25.20.3:80;
server 172.0.0.1 backup; ##172.25.20.2:80,172.25.20.3:80上的服务访问不到时,会访问本机的服务
}
nginx cookie
unzip nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip
./configure --prefix=/usr/local/nginx --with-http_ssl_modul --with-http_stub_staus_module --with-threads --with-file-aio --add-module=/mnt/nginx-goodies-nginx-sticky-module-ng-08a395c66e42
make
make install
vim /usr/local/nginx/conf/nginx.conf
upstream westos {
sticky;
server 172.25.20.2:80;
server 172.25.20.3:80;
}
当通过curl 访问时,会轮循,因为curl不能从cookie中读取数据
当通过浏览器访问时,刷新后只会显示同一个页面,因为会从cookie中读取缓存数据