分享

Keystone 高可靠性部署与性能测试

本帖最后由 坎蒂丝_Swan 于 2014-12-8 16:13 编辑

问题导读

问题1:为了集中管理,全局共享一个 Keystone Server, 因此对 Keystone Server 都有哪些特殊的要求?
问题2:如何对Keystone进行部署?




Goal

     Keystone Region 为跨地域的 Openstack 集群提供了统一的认证和用户租户管理。目前公司在国内外部署了数十套 Openstack 集群,其中既有集群在内网,又有集群在公网;既有 Havana 集群,也有 Icehouse 集群;既有 nova-network 集群,又有 Neutron 集群,如下图:

1208-1.png


    为了集中管理,全局共享一个 Keystone Server, 因此对 Keystone Server 的安全性、兼容性以及性能,都有特殊的要求。
1208-2.png


    安全性通过 SSL 实现和防止 DDOS 实现, tempest 测试表明 Keystone 具有很高的向后兼容性,可靠性通过 Apache、Haproxy、mysqlcluster 实现(关于 openstack 整体 HA 的实现,可以参考  http://blog.csdn.net/wsfdl/article/details/41386155),如下图:

1208-3.png

Deployment

物理主机信息
Host Name            IP                         VIP/DNS                                 CPU                                        Memory
keystone01            internal_ip01        public_ip/keystone-server       E5-2620(24 Processor)          64G
keystone02            internal_ip02        public_ip/keystone-server       E5-2620(24 Processor)          64G

说明:若无注明,keystone01 和 keystone02 的部署与配置相同
# yum   -y   install   mysql mysql-server MySQL-python
# yum   -y   install   openstack-keystone python-keystoneclient
# yum   -y   install   haproxy
# yum   -y   install   httpd
# yum   -y   install   keepalived
# yum   -y   install   haproxy
# yum   -y   install   httpd
# yum   -y   install   keepalived


Configuration
/etc/keystone/keystone.conf
  1. [DEFAULT]
  2. public_endpoint=https://keystone-server/main/
  3. admin_endpoint=https://keystone-server/admin/
  4. [database]
  5. connection=mysql://keystone:keystonepass@mysqlserver/keystone
  6. max_pool_size=500
  7. [signing]
  8. token_format=UUID
  9. [ssl]
  10. cert_subject=/C=US/ST=Unset/L=Unset/O=Unset/CN=keystone-server
  11. [token]
  12. provider=keystone.token.providers.uuid.Provider
复制代码

/etc/httpd/conf.d/wsgi-keystone.conf
  1. NameVirtualHost *:5000
  2. Listen internal_ip0x:5000
  3. <VirtualHost *:5000>
  4. ServerName keystone-main
  5. WSGIScriptAlias /main  /var/www/cgi-bin/keystone/main
  6. ErrorLog /var/log/keystone/apache2-main-error.log
  7. LogLevel debug
  8. CustomLog /var/log/keystone/apache2-main-access.log common
  9. </VirtualHost>
  10. NameVirtualHost *:35357
  11. Listen internal_ip0x:35357
  12. <VirtualHost *:35357>
  13. ServerName keystone-admin
  14. WSGIScriptAlias /admin  /var/www/cgi-bin/keystone/admin
  15. ErrorLog /var/log/keystone/apache2-admin-error.log
  16. LogLevel debug
  17. CustomLog /var/log/keystone/apache2-admin-access.log common
  18. </VirtualHost>
复制代码

/etc/haproxy/haproxy.cfg
  1. <b>global</b>
复制代码

/etc/keepalived/keepalived.conf

  1. vrrp_script haproxy-check {
  2.       script "killall -0 haproxy"
  3.       interval 2
  4.       weight 10
  5. }
  6. vrrp_instance openstack-vip {
  7.       state MASTER             # 注:keystone01 为 MASTER, keystone02 为 BACKUP
  8.       priority 102
  9.       interface eth0
  10.       virtual_router_id 108
  11.       advert_int 3
  12.       virtual_ipaddress {
  13.            public_ip
  14.     }
  15.     track_script {
  16.      haproxy-check
  17.     }
  18. }
复制代码

# mkdir   /var/www/cgi-bin/keystone/
# cp   /usr/share/keystone/keystone.wsgi   /var/www/cgi-bin/keystone/
# ln   -s   /var/www/cgi-bin/keystone/keystone.wsgi   /var/www/cgi-bin/keystone/admin
# ln   -s   /var/www/cgi-bin/keystone/keystone.wsgi   /var/www/cgi-bin/keystone/main
# service   httpd   start
# chkconfig   httpd   on
# keystone-manage   ssl_setup   --keystone-user   keystone   --keystone-group   keystone  
                  
注:keystone01
# cat  /etc/keystone/ssl/certs/keystone.pem   /etc/keystone/ssl/private/keystonekey.pem   >   /etc/haproxy/keystone_https.pem             
注:keystone01,同时把 keystone_https.pem 拷贝至 keystone02 /etc/haproxy/ 目录下
# (crontab   -l   -u   keystone   2>&1 | grep   -q   token_flush)   ||   echo '@dayly   /usr/bin/keystone-manage   token_flush >/var/log/keystone/keystone-tokenflush.log   2>&1'   >>   /var/spool/cron/keystone
# echo   "net.ipv4.ip_nonlocal_bind = 1"   >>   /etc/sysctl.conf
# sysctl   -p
# service   haproxy   start
# chkconfig   haproxy   on
# service   keepalived   start
# chkconfig   keepalived   on

BenchmarkConfigure Rally
关于 Rally,详情请参见  Openstack 性能测试 http://blog.csdn.net/wsfdl/article/details/41654373
# git   clone   https://git.openstack.org/stackforge/rally   &&   cd   rally
# ./rally/install_rally.sh   -v
# source   /opt/rally/bin/activate
#  rally   deployment   create   --filename=existing.json   --name=existing
#  rally   -v   task   start   create-user.json
  1. (rally)[root@controller rally]# cat existing.json  
  2. {  
  3.      "type": "ExistingCloud",  
  4.      "auth_url": "https://keystone-server/admin/v2.0",  
  5.      "admin": {  
  6.      "username": "test",  
  7.      "password": "test",  
  8.      "tenant_name": "test"  
  9.    }  
  10. }  
复制代码

create-user.json

  1. {  
  2.         "KeystoneBasic.create_user": [  
  3.                {  
  4.                    "args": {  
  5.                          "name_length": 10  
  6.                    },  
  7.                 "runner": {  
  8.                     "type": "constant",  
  9.                     "times": 10000,  
  10.                     "concurrency": 900  
  11.                   }  
  12.                }  
  13.           ]  
  14. }   
复制代码
Result
注:以创建用户为例,一个并发数(Concurrency),包含两个 HTTPS 请求(一个为申请 token,另一个为创建用户)。此处仅给出 mysql(单点) 数据库下keystone server 的并发性能。
    1208-4.png


    1208-5.png








欢迎加入about云群90371779322273151432264021 ,云计算爱好者群,亦可关注about云腾讯认证空间||关注本站微信

已有(1)人评论

跳转到指定楼层
chinaboy2005 发表于 2014-12-8 17:27:18
这个云资料学习中
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条