OpenStack API部分高可用配置(二)
一、安装与配置HAProxy
1、调整内核参数,允许绑定VIP:
vim /etc/sysctl.conf
【内容】
net.ipv4.ip_nonlocal_bind=1
sysctl -p
2、安装HAProxy:
【源码安装】
wget -c http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.23.tar.gz
【备用链接:http://down1.chinaunix.net/distfiles/haproxy-1.4.21.tar.gz】
tar zxvf haproxy-1.4.23.tar.gz
cd haproxy-1.4.23
make TARGET=linux26 #如果是32位机器,则make TARGET=linux26 ARCH=i386
make install
mkdir -p /etc/haproxy
cp examples/haproxy.cfg /etc/haproxy/haproxy.cfg【可以跳过】
【yum安装】
yum install haproxy
3、配置HAProxy:
vim /etc/haproxy/haproxy.cfg
【内容】
global
daemon
defaults
mode http
maxconn 10000
timeout connect 10s
timeout client 10s
timeout server 10s
frontend keystone-admin-vip
bind 10.10.102.45:35357
default_backend keystone-admin-api
frontend keystone-public-vip
bind 10.10.102.45:5000
default_backend keystone-public-api
frontend quantum-vip
bind 10.10.102.45:9696
default_backend quantum-api
frontend glance-vip
bind 10.10.102.45:9191
default_backend glance-api
frontend glance-registry-vip
bind 10.10.102.45:9292
default_backend glance-registry-api
frontend nova-ec2-vip
bind 10.10.102.45:8773
default_backend nova-ec2-api
frontend nova-compute-vip
bind 10.10.102.45:8774
default_backend nova-compute-api
frontend nova-metadata-vip
bind 10.10.102.45:8775
default_backend nova-metadata-api
frontend cinder-vip
bind 10.10.102.45:8776
default_backend cinder-api
backend keystone-admin-api
balance roundrobin
server mesa-virt-01 10.10.102.6:35357 check inter 10s
server mesa-virt-02 10.10.102.7:35357 check inter 10s
backend keystone-public-api
balance roundrobin
server mesa-virt-01 10.10.102.6:5000 check inter 10s
server mesa-virt-02 10.10.102.7:5000 check inter 10s
backend quantum-api
balance roundrobin
server mesa-virt-01 10.10.102.6:9696 check inter 10s
server mesa-virt-02 10.10.102.7:9696 check inter 10s
backend glance-api
balance roundrobin
server mesa-virt-01 10.10.102.6:9191 check inter 10s
server mesa-virt-02 10.10.102.7:9191 check inter 10s
backend glance-registry-api
balance roundrobin
server mesa-virt-01 10.10.102.6:9292 check inter 10s
server mesa-virt-02 10.10.102.7:9292 check inter 10s
backend nova-ec2-api
balance roundrobin
server mesa-virt-01 10.10.102.6:8773 check inter 10s
server mesa-virt-02 10.10.102.7:8773 check inter 10s
backend nova-compute-api
balance roundrobin
server mesa-virt-01 10.10.102.6:8774 check inter 10s
server mesa-virt-02 10.10.102.7:8774 check inter 10s
backend nova-metadata-api
balance roundrobin
server mesa-virt-01 10.10.102.6:8775 check inter 10s
server mesa-virt-02 10.10.102.7:8775 check inter 10s
backend cinder-api
balance roundrobin
server mesa-virt-01 10.10.102.6:8776 check inter 10s
server mesa-virt-02 10.10.102.7:8776 check inter 10s
4、HAProxy的启动管理脚本:
vim /etc/init.d/haproxy
【内容】
# cat /etc/init.d/haproxy
#!/bin/bash
#
# chkconfig: 2345 85 15
# description: HA-Proxy is a TCP/HTTP reverse proxy which is particularly suited \
# for high availability environments.
# processname: haproxy
# config: /etc/haproxy.cfg
# pidfile: /var/run/haproxy.pid
# Source function library.
if [ -f /etc/init.d/functions ]; then
. /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
. /etc/rc.d/init.d/functions
else
exit 0
fi
CONF_FILE="/etc/haproxy/haproxy.cfg"
HAPROXY_BINARY="/usr/local/sbin/haproxy"
PID_FILE="/var/run/haproxy.pid"
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -f ${CONF_FILE} ] || exit 1
RETVAL=0
start() {
$HAPROXY_BINARY -c -q -f $CONF_FILE
if [ $? -ne 0 ]; then
echo "Errors found in configuration file."
return 1
fi
echo -n "Starting HAproxy: "
daemon $HAPROXY_BINARY -D -f $CONF_FILE -p $PID_FILE
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/haproxy
return $RETVAL
}
stop() {
echo -n "Shutting down HAproxy: "
killproc haproxy -USR1
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/haproxy
[ $RETVAL -eq 0 ] && rm -f $PID_FILE
return $RETVAL
}
restart() {
$HAPROXY_BINARY -c -q -f $CONF_FILE
if [ $? -ne 0 ]; then
echo "Errors found in configuration file, check it with 'haproxy check'."
return 1
fi
stop
start
}
check() {
$HAPROXY_BINARY -c -q -V -f $CONF_FILE
}
rhstatus() {
pid=$(pidof haproxy)
if [ -z "$pid" ]; then
echo "HAProxy is stopped."
exit 3
fi
status haproxy
}
condrestart() {
[ -e /var/lock/subsys/haproxy ] && restart || :
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload)
restart
;;
condrestart)
condrestart
;;
status)
rhstatus
;;
check)
check
;;
*)
echo $"Usage: haproxy {start|stop|restart|reload|condrestart|status|check}"
RETVAL=1
esac
exit $RETVAL
5、检查HAProxy的配置是否正确:
# /etc/init.d/haproxy check
Configuration file is valid
【可能要经过如下处理:】
1). 【问题】
etc/init.d/haproxy check
-bash: /etc/init.d/haproxy: Permission denied
【解决】
cd /etc/init.d
chmod a+x haproxy
2). 【问题】
/etc/init.d/haproxy check
/etc/init.d/haproxy: line 70: /usr/local/bin/haproxy: No such file or directory
【解决】
cp /usr/local/sbin/haproxy /usr/local/bin/
二、Pacemaker + CoroSync配置
1、先定义一些资源属性约束(包括禁止STONITH错误,忽略Quorum,防止资源在恢复之后移动等):
# crm configure
property stonith-enabled=false
property no-quorum-policy=ignore
rsc_defaults resource-stickiness=100
rsc_defaults failure-timeout=0
rsc_defaults migration-threshold=10
2、配置VIP资源:
crm(live)configure#
primitive api-vip ocf:heartbeat:IPaddr2 params ip=10.10.102.45 cidr_netmask=24 op monitor interval=5s
3、配置HAProxy资源:
crm(live)configure#
primitive haproxy lsb:haproxy op monitor interval="5s"
4、定义运行的HAProxy和VIP必须在同一节点上:
crm(live)configure#
colocation haproxy-with-vip INFINITY: haproxy api-vip
5、定义先接管VIP之后才启动HAProxy:
crm(live)configure#
order haproxy-after-IP mandatory: api-vip haproxy
6、验证并提交配置:
crm(live)configure# verify
crm(live)configure# commit
crm(live)configure# quit
7、资源状态查看
查看资源状态:
crm_mon -1 【可能有问题】
或
crm status
在机器1上查看:
/etc/init.d/haproxy status
haproxy (pid 1629) is running...
ip addr show eth0
2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:67:ab:7e brd ff:ff:ff:ff:ff:ff
inet 10.10.102.6/24 brd 192.168.1.255 scope global eth0
inet 10.10.102.45/24 brd 192.168.1.255 scope global secondary eth0【此处会显示虚拟ip】
inet6 fe80::a00:27ff:fe67:ab7e/64 scope link
valid_lft forever preferred_lft forever
在机器2上查看:
/etc/init.d/haproxy status
HAProxy is stopped.
ip addr show eth0
2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:67:ab:7e brd ff:ff:ff:ff:ff:ff
inet 10.10.102.7/24 brd 192.168.1.255 scope global eth0
inet6 fe80::a00:27ff:fe67:ab7e/64 scope link tentative dadfailed
valid_lft forever preferred_lft forever
从上面的这些信息,可以知道VIP绑定在机器1上,同时只有机器1上的HAProxy已经启动.
8、Failover测试
在pacemaker中standby正在运行资源的机器,观察集群资源在两台机器中间的转移。
【用到的命令】
crm node standby 机器名
crm status
crm node online 机器名
三、以keystone为例配置API服务
1、/etc/keystone/keystone.conf配置【如果是其他API服务应该修改认证地址,不修改绑定地址】
【貌似无需修改,都绑定监听自己的物理ip】
2、service endpoint配置【在一台机器上修改就行了,由于此时mysql已经实现HA,所以在任意一台机器上修改endpoint对两台机器都是全局有效的】
1) 以当前admin身份登录keystone
2)创建绑定vip的endpoint
keystone service-list
【记住service-list中keystone的service-id】
keystone endpoint-create --region RegionOne \
--service-id $(keystone service-list | awk '/ keystone / {print $2}') \
--publicurl "http://10.10.102.45:5000/v2.0" \
--internalurl "http://10.10.102.45:5000/v2.0" \
--adminurl http://10.10.102.45:35357/v2.0
【10.10.102.45为vip】
3)删除旧的endpoint
keystone endpoint-list
【记住旧的endpoint的id号】
keystone endpoint-delete 21a7b25a08d74882a711f09f0c313170
4)重启服务
service openstack-keystone restart
5)验证
export OS_AUTH_URL=http://10.10.102.45:35357/v2.0/
【10.10.102.45为vip】
keystone user-list(正常)
四、测试与验证:
由于API服务没有作为pacemaker的资源,所以必须在两台机器中的一台上手动停掉API服务,然后在其他机器上用VIP登录API服务
【例如,用到的命令如下】
service openstack-keystone stop
service openstack-keystone status
参考网站:
http://openstack.redhat.com/Load_Balance_OpenStack_API#HAProxy
http://openstack.redhat.com/RDO_HighlyAvailable_and_LoadBalanced_Control_Services 【附带Mysql和Qpid的HA配置】
OpenStack API部分高可用配置(二)的更多相关文章
- OpenStack API部分高可用配置(一)
一.概况与原理 SHAPE \* MERGEFORMAT 1)所需要的配置组件有:pacemaker+corosync+HAProxy 2)主要原理:HAProxy作为负载均衡器,将对openst ...
- OpenStack中MySQL高可用配置
采用Heartbeat+DRBD+mysql高可用方案,配置两个节点的高可用集群 l 配置各节点互相解析 gb07 gb06 l 配置各节点时间同步 gb07 [root@gb07 ~]# ntp ...
- 双主MySQL+keepalived高可用配置
部署双节点双主数据库服务器mysql 分别在二台服务器上安装mysql,要求同版本或主服务器比从服务器版本高. 主机mysql配置: Vi /etc/my.cnf [mysqld] Log-bin=m ...
- MariaDB+Keepalived双主高可用配置MySQL-HA
利用keepalived构建高可用MySQL-HA,保证两台MySQL数据的一致性,然后用keepalived实现虚拟VIP,通过keepalived自带的服务监控功能来实现MySQL故障时自动切换. ...
- Spring Cloud之踩坑01 -- Eureka高可用配置
转载:https://blog.csdn.net/dear_Alice_moon/article/details/79373955 问题描述: 在进行Eureka高可用配置时,控制台一直出现“.... ...
- Keepalived保证Nginx高可用配置
Keepalived保证Nginx高可用配置部署环境 keepalived-1.2.18 nginx-1.6.2 VM虚拟机redhat6.5-x64:192.168.1.201.192.168.1. ...
- Mycat高可用解决方案二(主从复制)
Mycat高可用解决方案二(主从复制) 系统部署规划 名称 IP 主机名称 用户名/密码 配置 mysql主节点 192.168.199.110 mysql-01 root/hadoop 2核/2G ...
- springCloud 之 Eureka注册中心高可用配置
springCloud的eureka高可用配置方案思路是:几个服务中心之间相互注册,比如两个注册中心,A注册到B上,B注册到A上,如果是三个注册中心则是:A注册到BC上,B注册到AC上,C注册到AB上 ...
- ES数据库高可用配置
ES高可用集群部署 1.ES高可用架构图 2.创建ES用户组 1.Elasticsearch不能在 root 用户下启动,我们需要在三台机器上分创建一个普通用户# 创建elastic用户 userad ...
随机推荐
- 微信小程序之生命周期
1. 整个小程序生命周期 App({}) //app.js App({ onLaunch: function (options) { // 小程序初始化完成时(全局只触发一次) // 程序销毁(过一段 ...
- PowerBI开发 第十三篇:增量刷新
PowerBI 将要解锁增量刷新(Incremental refresh)功能,这是一个令人期待的更新,使得PowerBI可以加载大数据集,并能减少数据的刷新时间和资源消耗,该功能目前处于预览状态,只 ...
- 【ORACLE】oracle11g dg搭建
--------------------------------每个节点和DG------------------------------------------------------------- ...
- Js_获取当前日期时间
一.获取当前时间 new Date()方法---------得到结果是当前电脑时间如2011-11-6,10:07 二.获取有个固定的时间方法---------var endtime=new Date ...
- CentOS 6.8 安装vsftpd
简介: vsftpd是“very secure FTP daemon”的缩写,是一个完全免费的.开发源代码的ftp服务器软件. 特点: vsftpd是一款在Linux发行版本中最受推崇的FTP服务器程 ...
- ConceptVector: Text Visual Analytics via Interactive Lexicon Building using Word Embedding
论文简介 本文是对词嵌入的一种应用,用户可以根据自己的需要创建concept,系统根据用户提供的seed word推荐其他词汇,以帮助用户更高的构建自己的concept.同时用户可以利用自己创建的 ...
- Ubuntu16.04+Java8+Mysql5.7+Tomcat8.5服务器环境配置
本文章使用环境: Ubuntu16.04 Java8 Mysql5.7 Tomcat8.5 Ubuntu 版本16.04, 本文采用SSH远程登录主机 工具:Xshell 默认使用root用户登录 ( ...
- FUNMVP:5G技术对块链信任体系建设的影响
01 区块链现阶段应用在于概念证明 12月10日,工信部向三大运营商正式发放了5G系统实验频率运用允许,这让区块链从业者开端思索5G技术与区块链分别的可能性.在互联网的基础上依据区块链的特性完成价值的 ...
- Node.js Event Loop 的理解 Timers,process.nextTick()
写这篇文章的目的是将自己对该文章的理解做一个记录,官方文档链接The Node.js Event Loop, Timers, and process.nextTick() 文章内容可能有错误理解的地方 ...
- c# 简易绘制C语言头文件包含关系图
最近在做一个项目的移植工作,项目很大,光c文件大约有1800多.由于某些需要,想要对某些代码文件引用的.h文件进行分析. 网上找了好久,暂无发现类似的工具. 正好,今天放假,就做了这么个工具. 好了, ...