第3章安装Keystone安全认证服务早期的OpenStack版本中,并没有Keystone安全认证模块.
用户、消息、API调用的认证,都是放在Nova模块中.
在后来的开发中,由于有各种各样的模块加入到OpenStack中,安全认证所涉及的面也变得更加广泛,如用户登录、用户消息传递、模块消息通信、服务注册等各不相同的认证.
处理这些不同的安全认证变得越来越复杂,于是需要一个模块来处理这些不同的安全认证.
Keystone也就应运而生.
本章主要介绍MySQL的安装与使用,以及Keystone服务安装及测试.
本章主要涉及到的知识点如下.
MySQL:数据库的介绍与安装.
RabbitMQ:消息通信服务的介绍与安装.
Keystone:安全认证服务的介绍与安装.
3.
1Keystone简介OpenStack管理了众多的软硬件资源,并且利用这些资源提供云服务.
任何资源的管理,都会涉及到安全的管理.
就OpenStack而言,安全的管理,分为以下几个方面:用户认证、服务认证和口令认证.
无论是私有云还是公有云,都会开放接口给众多的用户.
Keystone在对于用户进行认证的同时,也对用户的权限进行了限制.
Keystone还会保证OpenStack的服务可以正常注册.
除此之外,各服务组件之间的消息传递还需要用口令,当口令过期则不再使用此口令.
如果把OpenStack比作一个别墅,OpenStack内部的各种服务好比各种房间,用户比作住在别墅里面的人,那么Keystone就是相当于别墅的安全机制.
首先,进入别墅的人需要进行身份认证.
除此之外,当用户进入到别墅之后,只能进入属于自己可以访问的房间,并不是所有的房间都可以进去(好比Keystone的用户权限管理).
别墅里面的房间都需要进行安全机制的管理(如上锁、刷卡).
此外串门的时候,还需要使用口令1.
由于OpenStack所有的服务都需要在Keystone上进行注册,所以OpenStack的安装需要从Keystone入手.
1实际上,在家里面,也经常使用口令.
进门的时候会说"我回来了",进入父母的房间会说"我可以进来么",人的声音就起到了口令的作用.
第3章安装Keystone安全认证服务·71·3.
2搭建局域网源数据中心中的结点,并不能保证都能够正常地访问公共网络.
在这些节点上安装服务时,最好的方式是使用离线源.
本节介绍如何搭建两种将会在OpenStack中用到的源:deb源和python安装包源.
3.
2.
1局域网apt-get源搭建方法实际安装部署时,并不能保证每个结点都可以访问网络.
因此,建立局域网apt-get源显得非常必要.
建立局域网源方法如下.
1.
下载deb包假设有两类相同Ubuntu版本的结点:A类结点可以直接访问公共网络;B类结点不能直接访问公共网络.
首先需要在A类结点上安装所需要的deb包.
比如,如果B类结点需要安装python-dev包,那么需要在A类结点上执行:root@A-node#apt-getinstallpython-dev如果B类结点需要安装的包非常多,那么只需要将这些包,在A类结点上都执行一遍即可.
安装命令执行成功之后,在A结点上收集所有的deb包,放置于/tmp/debs/目录下:root@A-node#mkdir-p/tmp/debs/root@A-node#cd/var/cache/apt/root@A-node#find.
-name"*.
deb"|xargs-icp-rf{}/tmp/debs/2.
创建deb结构描述文件/tmp/debs目录包含了所需的deb包,可是/tmp/debs目录并不能直接作安装源使用.
还需要创建目录结构描述文件Packages.
g.
创建目录结构描述文件需要利用dpkg-scanpackages命令,首先需安装dpkg-dev包:root@A-node#apt-getinstall-y--force-yesdpkg-dev安装成功之后,可以创建目录描述文件:root@A-node#cd/tmp/root@A-node#rm-rfdebs/Packages.
gzroot@A-node#dpkg-scanpackagesdebs/|gzip>debs/Packages.
gz3.
使用局域网源此时,/tmp/debs目录已经具备了目录结构描述文件Packages.
gz.
但是,如何使用呢答案便是安装Apache服务.
01root@A-node#apt-getinstall-y--force-yesopenssh-serverbuild-essentialgit\第2篇安装篇·72·python-devpython-setuptoolspython-piplibxml2-dev\libxslt1.
1libxslt1-devlibgnutls-devlibnl-3-dev\python-virtualenvlibnspr4-devlibnspr4pkg-config\apache2unzip02[[-e/usr/include/libxml]]&&rm-rf/usr/include/libxml03ln-s/usr/include/libxml2/libxml/usr/include/libxml04[[-e/usr/include/netlink]]&&rm-rf/usr/include/netlink05ln-s/usr/include/libnl3/netlink/usr/include/netlink注意:这里多安装了一些包,是为了在安装python某些源包时,自动解决掉其依赖.
比如python-lxml包.
在A结点上,将/tmp/debs复制至/var/www/目录下.
root@A-node#cp-rf/tmp/debs/var/www/使用方法比较简单,只需要在/etc/apt/sources.
list文件中添加如下内容:root@B-node#cp-rf/etc/apt/sources.
list/etc/apt/sources.
list_bakroot@B-node#echo"debhttp://192.
168.
111.
140debs/">/etc/apt/sources.
list注意:192.
168.
111.
140是A类结点在局域网内的IP地址.
也可以使用主机名.
3.
2.
2局域网python源搭建方法除了apt-get源之外,还需要建立python安装包的源,以便pip命令安装依赖包使用.
如果局域网内的结点不能访问网络,利用pip命令安装依赖包将会失败.
那么,如何建立python包源给局域网使用呢1.
下载python包同理,假设有两类相同环境的Ubuntu结点:A类结点可以直接访问公共网络;B类结点不能直接访问公共网络.
需要在A类结点上安装相应的python包,比如:root@A-node#pipinstall-rpip-requires--download-cache=/tmppip-requires并不是一个python包,而是一系列python包的列表,内容如下:kombu>=0.
9.
17routes>=1.
12.
3执行成功之后,pip会将pip-requires中需要的包都下载至/tmp/目录.
在/tmp/目录下的安装包名字显得比较混乱,比如:#ls/tmp/http%3A%2F%2Fpypi.
python.
org%2Fpackages%2Fsource%2Fk%2Fkombu%2Fkombu-2.
5.
10.
tar.
gzhttp%3A%2F%2Fpypi.
python.
org%2Fpackages%2Fsource%2Fp%2Fpycrypto%2Froutes-1.
12.
3.
tar.
gz通过运行如下脚本,可以简化包的名字:01#catch.
sh第3章安装Keystone安全认证服务·73·02#!
/bin/bash03rm-rf*type*.
html04fornin`find.
-name"http*"`05do06mv$n${n##*2F}07done简化之后的结果如下:#ls/tmp/kombu-2.
5.
10.
tar.
gzroutes-1.
12.
3.
tar.
gz2.
建立目录树接下来,只需要建立如下目录树:root@A-node#tree/tmp/pip/tmp/pipkombukombu-2.
5.
10.
tar.
gzroutesroutes-1.
12.
3.
tar.
gz3.
Apache服务python安装包源的建立,最好的依赖方式还是使用Apache服务来支撑.
首先安装好Apache服务:root@A-node#apt-getinstallapache2root@A-node#cp-rf/tmp/pip/var/www/root@A-node#serviceapache2restart4.
使用局域网python源安装某个包时,只需要指定下载服务器即可,比如:root@B-node#pipinstallroutes-ihttp://192.
168.
111.
140/pip或者批量安装:root@B-node#pipinstall-rpip-requires-Ihttp://192.
168.
111.
140/piproot@B-node#catpip-requireskombu>=0.
9.
17routes>=1.
12.
3注意:192.
168.
111.
140是A类结点在局域网内的IP地址.
也可以使用主机名.
5.
自动建立OpenStackPython依赖源由于OpenStackPython依赖包太多,本文也提供了自动下载并构建目录树的脚本1.
运行方式如下:root@A-node#gitclonehttps://github.
com/JiYou/openstack.
git1https://github.
com/JiYou/openstack/tree/master/tools/pip.
sh.
第2篇安装篇·74·root@A-node#cdopenstack/tools/root@A-node#.
/pip.
sh注意:保证运行结点能够直接连上公共网络;如果需要设置proxy,请将proxy设置于~/proxy文件中.
文件内容如下:exporthttps_proxy="http://ip:port"exporthttp_proxy=$valueexportftp_proxy=$value3.
2.
3Ubuntu-12.
10局域网源由于本书使用的是Ubuntu-12.
10Server,在GitHub上,早已准备好了相应的资源.
如果操作系统版本一致,那么构建OpenStack所用的局域网源就比较简单了(确保OpenStack版本一致).
(1)建源root@A-node#gitclonehttps://github.
com/JiYou/openstack.
gitroot@A-node#cdopenstack/tools/root@A-node#.
/create_http_repo.
sh(2)使用其他结点使用A结点上的源,设置方式如下:root@B-node#cp-rf/etc/apt/sources.
list/etc/apt/sources.
list_bakroot@B-node#echo"debhttp://A-nodedebs/">/etc/apt/sources.
list此外,在后续的安装中,如果涉及到localrc文件中的PIP_HOST变量,即是指向A结点.
例如:PIP_HOST=A-node3.
3搭建MySQL数据库Keystone所有的数据都存放于数据库中.
由于MySQL数据库的大规模使用,在OpenStack中,也推荐使用MySQL作为数据库.
MySQL数据库的搭建本来不是OpenStack的重点,在很多安装文档中,也都一笔带过.
但是MySQL数据库安装及配置带来的问题,会影响到整个OpenStack环境,因此本节专门讲解MySQL数据库的搭建.
MySQL数据库的搭建,有大、中、小3种规模.
大型应用情况下,还可以使用集群部署来保证数据查询的性能.
但是本节由于是试验性质,并不讲解各种复杂的安装与部署方法.
本节根据部署经验,选择了简单、快捷的部署方式.
大型环境下的安装,需要参考MySQL更加专业的文档1.
3.
3.
1apt-get安装MySQL安装MySQL数据库,一般而言,有两种方法:apt-get安装;源码编译安装.
本书的1《构建高可用linux服务器》一书中提到了各种MySQL数据库的部署方法,可供参考.
第3章安装Keystone安全认证服务·75·OpenStack安装环境,是将每个服务单独进行安装,以便进行讲解与调试.
每个服务单独安装与介绍,也容易理解.
因此,本书的每个服务都是尽量单独安装到不同的物理机或者虚拟机中.
为了安全和方便,将MySQL单独安装到一台物理机或者虚拟机中1.
1.
准备虚拟机本书是将MySQL安装到一个单独的虚拟机中,如果已经有了ubuntu-12.
10的虚拟机,或者物理机,此步骤可以略过.
首先应该采用本书2.
4节介绍的方法,制作ubuntu-12.
10.
raw虚拟磁盘,并将虚拟磁盘存放于/cloud/_base目录下.
当准备好raw格式的ubuntu-12.
10虚拟磁盘之后,还需要一个xml文件作为虚拟机配置模板.
本书提供了一个虚拟机配置文件2,下载此文件并保存为/cloud/_base/back.
此外还提供了一个快速创建虚拟机的脚本vm.
sh3,下载之后,放在/cloud/目录下.
进而形成如下的目录结构:root@server4:/#tree/cloud/cloud_baseback#虚拟机xml配置文件模板ubuntu-12.
10.
raw#做好的ubuntu-12.
10的虚拟磁盘,作为backingfilevm.
sh#快速创建虚拟机的脚本注意:使用vm.
sh创建虚拟机的时候,需要根据所使用的ubuntu-12.
10.
raw文件修改vm.
sh第48行:mount/dev/mapper/ubuntu--12-root$temp_file.
/dev/mapper/Ubuntu--12--root路径表示了虚拟磁盘根分区在宿主机上的路径.
当准备好脚本之后,可以利用脚本创建mysql的虚拟机,运行命令如下:root@server4:/cloud#.
/vm.
shmysqlroot@server4:/cloud#virshdefinemysql/mysqlroot@server4:/cloud#virshstartmysqlroot@server4:/cloud#virshvncdisplaymysql:0如果虚拟机使用的是DHCP获得网络IP,在第一次连接时,需要使用vnc登录4,从而获得虚拟机的IP地址,如图3.
1所示.
获取虚拟机的IP之后,会发现虚拟机有两个IP地址.
SSH应该使用哪个IP地址登录虚拟机呢值得注意的一点是:如果处于公有网段(或和宿主机一样网段),连接虚拟机时都需要采用eth0的IP地址.
eth1的静态IP地址,主要是用于同一台宿主机上的虚拟机相互通信5.
1这台物理机或者服务器,不要安装别的OpenStack组件,否则容易出现数据库连接不上的问题.
2https://github.
com/JiYou/openstack/blob/master/chap03/cloud/_base/back.
3https://github.
com/JiYou/openstack/blob/master/chap03/cloud/vm.
sh.
4连接vnc时,采用vncviewer,输入宿主机IP:端口号即可.
5采用这种方式,虚拟机之间的相互通信,就可以采用固定IP地址,不用再担心IP地址的变化.
第2篇安装篇·76·图3.
1vnc连接虚拟机查看IP地址2.
安装MySQL当虚拟机或者物理机准备就绪之后,便可以安装MySQL1.
在安装MySQL之前,首先需要设置防火墙.
配置防火墙命令如下:01iptables-IINPUT1-ptcp--dport3306-jACCEPT#MySQL02iptables-IINPUT1-ptcp--dport5672-jACCEPT#AMPQ03iptables-IINPUT1-ptcp--dport5000-jACCEPT#Keystonepublic04iptables-IINPUT1-ptcp--dport35357-jACCEPT#Keystoneadmin05iptables-IINPUT1-ptcp--dport9191-jACCEPT#Glanceregistry06iptables-IINPUT1-ptcp--dport9292-jACCEPT#Glanceapi07iptables-IINPUT1-ptcp--dport8773-jACCEPT#nova-api08iptables-IINPUT1-ptcp--dport5900:6400-jACCEPT#nova-compute09iptables-IINPUT1-ptcp--dport8776-jACCEPT#Cinder10iptables-IINPUT1-ptcp--dport3260-jACCEPT#iSCSIforcinder-#volume11iptables-IINPUT1-ptcp--dport9696-jACCEPT#Quantum12iptables-IINPUT1-ptcp--dport6080-jACCEPT#noVNCport13iptables-IINPUT1-ptcp–-dport80jACCEPT#dashboardwebport如果每次机器重启之后都要输入这些命令,并不是一个好方法.
因此,一种简单的办法是在每次开机启动的时候,执行这些设置.
01functionsetup_iptables(){02set+oxtrace03sed-i"/exit/d"/etc/rc.
local#修改开机启动脚本,去掉exit004sed-i"/iptable/d"/etc/rc.
local#如果有旧的iptables设置,删除掉,防止冲突0506fornin330656725000353579191929287738774877587765900:64001MySQL的安装程序放于https://github.
com/JiYou/openstack/tree/master/chap03/mysql.
在使用时,请先运行init.
sh脚本.
接着再运行mysql.
sh安装MySQL.
第3章安装Keystone安全认证服务·77·32609696608080;do#为每个端口加入防火墙配置方案07echo"iptables-IINPUT1-ptcp--dport$n-jACCEPT">>/etc/rc.
local08done09echo"exit0">>/etc/rc.
local#加上exit0退出开机运行脚本10chmod+x/etc/rc.
local11set-oxtrace12}注意:这段代码位于function文件1中.
当配置好防火墙之后,就可以安装MySQL了.
一种简单而又方便的方式是直接apt-getinstallmysql-servermysql-client,便可以在Ubuntu上将MySQL安装好.
但是采用这种安装方式,需要手动输入密码.
并不利于自动化安装及配置.
因此,在这里,需要讲一下本书涉及到的安装方式.
本书中采用的安装方式,在将每个服务分别安装的同时,尽量将安装及配置分开.
因此,安装一般分为以下几个部分:OpenStack源码,比如Nova、Keystone和Swift;安装依赖包,主要是python依赖包;程序安装脚本,如nova.
sh、mysql.
sh和keystone.
sh等等,以服务为一个单位;配置文件localrc;工具包函数,位于tools/function目录下.
在安装MySQL时,应该先在配置文件中配置好MySQL的密码,以及写入MySQL服务所在的IP.
为MySQL的配置如下:MYSQL_ROOT_PASSWORD=mysqlpasswordMYSQL_HOST=10.
239.
82.
83注意:在使用时,应该根据自己所在环境做出更改.
配置完成之后,执行init.
sh设置防火墙,再执行mysql.
sh安装MySQL.
现将mysql.
sh脚本分段进行讲解.
MySQL密码配置代码如下:set_passwordMYSQL_ROOT_PASSWORD其中set_password会调用tools/function中的set_password函数:01functionset_password{02set+oxtrace03var=$1;04pw=${!
var}05localrc=$TOP_DIR/localrc06if[!
$pw];then#查看用户是否设置了MySQL密码,如果没有设置07if[!
-e$localrc];then#就生成一个10位长度的随机密码以供使用08touch$localrc09fi10pw=`opensslrand-hex10`#随机生成10位数长度的随机密码11eval"$var=$pw"12echo"$var=$pw">>$localrc#将随机生成的密码保存至用户的配置文件中13fi1https://github.
com/JiYou/openstack/blob/master/chap03/mysql/tools/function.
第2篇安装篇·78·14set-oxtrace15}注意:set_password函数会自动添加与设置变量MYSQL_ROOT_PASSWORD的值.
如果发现使用者并没有在localrc中设置MYSQL_ROOT_PASSWORD变量的值,那么将会使用一个长度为10的随机密码替代.
安装MySQL则使用如下命令:DEBIAN_FRONTEND=noninteractive\apt-get--option"Dpkg::Options::=--force-confold"--assume-yes\install-y--force-yesmysql-server注意:如果直接使用apt-getinstallmysql-server会在终端中弹出输入框,输入root用户的密码,对于自动化安装而言,不是很方便.
3.
配置MySQL当采用这种方式安装好MySQL之后,MySQL并没有设置root的密码,如果直接连接,则会失败.
这时,需要设置MySQL数据库root用户1的密码.
if[[`cat/etc/mysql/my.
cnf|grep"0.
0.
0.
0"|wc-l`-eq0]];thenmysqladmin-urootpassword$MYSQL_ROOT_PASSWORD#设置root用户的密码sed-i's/127.
0.
0.
1/0.
0.
0.
0/g'/etc/mysql/my.
cnf#修改配置,允许任何主机连接fi注意:在执行命令时,首先检查MySQL配置文件是否被修改,如果未被修改,那么设置MySQL的root用户密码以及修改配置文件.
接下来则是配置root用户的权限,以免在连接的时候,出现不能连接的情况.
servicemysqlrestartmysql-uroot-p$MYSQL_ROOT_PASSWORD-e"GRANTALLPRIVILEGESON*.
*TO'root'@'%'identifiedby'$MYSQL_ROOT_PASSWORD';FLUSHPRIVILEGES;"mysql-uroot-p$MYSQL_ROOT_PASSWORD-e"GRANTALLPRIVILEGESON*.
*TO'root'@'%'identifiedby'$MYSQL_ROOT_PASSWORD'WITHGRANTOPTION;FLUSHPRIVILEGES;"servicemysqlrestart配置好权限之后,重启MySQL服务,便可以正常使用了.
3.
3.
2源码安装MySQL对于希望自定义安装MySQL的使用者而言,没有比源码安装更好的方式了.
与apt-get安装方式相比,源码编译安装需要更多的配置步骤.
1值得注意的是,这里的root用户并不是Linux系统的root用户,而是数据库的根用户.
第3章安装Keystone安全认证服务·79·在开始源码安装之前,需要下载cmake1与MySQL的源代码2.
源码安装MySQL的主要步骤介绍如下(具体细节可以参见完整的脚本3).
(1)安装编译环境DEBIAN_FRONTEND=noninteractive\apt-get--option"Dpkg::Options::=--force-confold"--assume-yes\install-y--force-yesopenssh-serverbinutilscppfetchmail\flexgcclibarchive-zip-perllibc6-dev\libpcre3libpopt-devlynxm4makencftp\nmapperlperl-modulesunzipzipzlib1g-dev\autoconfautomake1.
9libtoolbisonautotools-dev\g++build-essentiallibncurses5-dev注意:这里是一行代码,不要分成几个命令执行.
(2)编译安装cmake01if[[!
-d$DIR/cmake]];then#查看安装目录是否已经安装过了02cd$TEMPDIR#编译时,将代码解压至临时目录编译03tarzxvf$TOPDIR/tarfile/cmake-2.
8.
8.
tar.
gz04cdcmake-2.
8.
805.
/configure--prefix=$DIR/cmake#confiugre时,只需要指定安装路径即可06make;makeinstall#编译并且安装07fi注意:默认的DIR=/opt,因此脚本默认将cmake安装至/opt/cmake目录下.
(3)至此,cmake就安装好了.
接下来需要添加mysql用户01if[[`cat/etc/passwd|grepmysql|wc-l`-eq0]];then#查看是否已经有了mysql用户02groupaddmysql#添加mysql组03useradd-gmysqlmysql#添加mysql用户至mysql组中04fi(4)解压源码01cd$TEMPDIR#源码安装时,将源码解压至临时目录02tarzxvf$TOPDIR/tarfile/mysql-5.
5.
20.
tar.
gz03cdmysql-5.
5.
20(5)利用cmake编译MySQL01#compilesourcecode.
02$DIR/cmake/bin/cmake\#cmake还支持更多的参数,不过这3个参数足够了03-DCMAKE_INSTALL_PREFIX=$DIR/mysql\#指定安装目录04-DMYSQL_DATADIR=$DIR/mysql/data\#指定数据库存储目录05-DEXTRA_CHARSETS=utf8#指定编码方式06make;makeinstall1cmake一种简单的安装方式是apt-getinstall-ycmake.
新版本MySQL需要使用cmake来生成Makefile.
2cmake的源码位置是http://www.
cmake.
org/cmake/resources/software.
html.
MySQL的源码从https://edelivery.
oracle.
com/注册之后,便可以下载.
3完整的脚本位于https://github.
com/JiYou/openstack/blob/master/chap03/mysql/mysql-src-ist.
sh.
第2篇安装篇·80·(6)安装完成之后,并不能直接使用,还需要做进一步的配置.
这些配置如果是使用apt-get安装,那么都已经配置好,不需要手动修改.
01chmod+w$DIR/mysql02chown-Rmysql:mysql$DIR/mysql03cp$DIR/mysql/support-files/my-large.
cnf/etc/my.
cnf#复制MySQL配置文件04cp$DIR/mysql/support-files/mysql.
server/etc/init.
d/mysql#复制服务启动脚本05chmod+x/etc/init.
d/mysql#给服务启动脚本添加执行权限06chmoda+w$DIR/mysql07mkdir-p$DIR/mysql/var/mysql#创建服务运行时所需要的目录08mkdir-p$DIR/mysql/var/mysql/data09mkdir-p$DIR/mysql/var/mysql/log10mkdir-p$DIR/mysql/var/mysql/lock11mkdir-p$DIR/mysql/var/run/mysqld12chown-Rmysql:mysql$DIR/mysql#注意更改所有者注意:由于这些安装操作都是在root下完成的,因此,在安装时,一定要掌握权限的设置.
(7)初始化数据库$DIR/mysql/scripts/mysql_install_db\--basedir=$DIR/mysql/\#指向安装目录,与cmake参数一致--datadir=$DIR/mysql/data\#指向数据库存储目录,与cmake参数一致--user=mysql设置MySQL数据库密码:servicemysqlrestart#首先启动服务$DIR/mysql/bin/mysqladmin-urootpassword$MYSQL_ROOT_PASSWORD#设置[-e/usr/bin/mysql]&&rm-rf/usr/bin/mysqlln-s/opt/mysql/bin/mysql/usr/bin/mysql#建立mysql可行执程序的链接当设置好MySQL数据库密码之后,接下来设置root用户的访问权限:mysql-uroot-p$MYSQL_ROOT_PASSWORD-e"GRANTALLPRIVILEGESON*.
*TO'root'@'%'identifiedby'$MYSQL_ROOT_PASSWORD';FLUSHPRIVILEGES;"mysql-uroot-p$MYSQL_ROOT_PASSWORD-e"GRANTALLPRIVILEGESON*.
*TO'root'@'%'identifiedby'$MYSQL_ROOT_PASSWORD'WITHGRANTOPTION;FLUSHPRIVILEGES;"3.
4安装RabbitMQ消息通信服务MySQL安装成功之后,接下来安装RabbitMQ消息通信服务.
MySQL为OpenStack提供了数据库服务,而RabbitMQ则提供了基于消息的通信服务和远程函数调用功能.
与传统的远程函数调用不同,RabbitMQ的远程函数调用也是基于消息传递的.
这种灵活的方式为函数调用提供了极大的便利,开发者在写远程函数调用的时候,不需要写服务端和客户端代码.
因此,服务端函数的修改,有时候并不会影响客户端代码.
RabbitMQ的安装相对简单,但是在安装时,建议找一台性能相对较好的机器进行第3章安装Keystone安全认证服务·81·安装.
在安装之前,首先要配置RabbitMQ安装需要的变量1:RABBITMQ_HOST=10.
239.
82.
159#RabbitMQ主机的IP地址RABBITMQ_USER=guest#连接RabbitMQ服务时使用的用户名RABBITMQ_PASSWORD=rabbit_password#连接时使用的密码当配置好环境之后,便可以进行RabbitMQ的安装2:set_passwordRABBITMQ_PASSWORD#设置连接密码参数apt-getinstall-yrabbitmq-server#安装RabbitMQ服务rabbitmqctlchange_passwordguest$RABBITMQ_PASSWORD#设置连接密码安装成功之后,可以运行一下命令来检查RabbitMQ服务是否正常运行:$psaux|greprabbit/usr/lib/erlang/erts-5.
9.
1/bin/beam-Ww-Ktrue-A30-P1048576---root/usr/lib/erlang-prognameerl---home/var/lib/rabbitmq---noshell-noinput-snamerabbit@arabbitmq-boot/var/lib/rabbitmq/mnesia/rabbit@arabbitmq-plugins-expand/rabbit-kernelinet_default_connect_options[{nodelay,true}]-saslerrlog_typeerror-saslsasl_error_loggerfalse-rabbiterror_logger{file,"/var/log/rabbitmq/rabbit@arabbitmq.
log"}-rabbitsasl_error_logger{file,"/var/log/rabbitmq/rabbit@arabbitmq-sasl.
log"}-os_monstart_cpu_supfalse-os_monstart_disksupfalse-os_monstart_memsupfalse-mnesiadir"/var/lib/rabbitmq/mnesia/rabbit@arabbitmq"注意:具体输出可能不相同.
3.
5安装Keystone讲了这么久,总算是要开始真正涉及OpenStack的安装了.
首先要安装的是OpenStack最关键的组件Keystone.
Keystone主要为整个OpenStack提供安全认证服务.
OpenStack用户登录、服务注册以及消息通信都会用到这个关键组件.
掌握安全组件的安装,直接关系到整个OpenStack的安装是否顺利.
在安装时,强烈建议git下载OpenStack安装脚本进行安装.
gitclonehttps://github.
com/JiYou/openstack.
git3.
5.
1python源码包的安装首先下载源码时,如果不是为了参与社区开发,都应该首选launchpad3上面提供的OpenStack的稳定版本的代码.
一个python源码包主要有以下安装步骤.
1完整的配置参见https://github.
com/JiYou/openstack/blob/master/chap03/rabbitmq/localrc.
2完整的脚本参见https://github.
com/JiYou/openstack/blob/master/chap03/rabbitmq/rabbitmq.
sh.
3https://launchpad.
net/openstack.
第2篇安装篇·82·(1)下载源码包Keystone的源码应该从https://launchpad.
net/openstack/keystone链接处下载,如图3.
2所示.
图3.
2Keystone下载页面(2)安装依赖包下载完成之后,接下来以Keystone为例,介绍如何手动安装python源码包.
首先应该安装pip工具及pyton开发包python-dev:01apt-getinstall-ypython-pippython-devbuild-essential02apt-getinstall-ylibxml2-devlibxslt-dev#安装python-lxml时需要这个开发库03[[-e/usr/include/libxml]]&&rm-rf/usr/include/libxml04ln-s/usr/include/libxml2/libxml/usr/include/libxml注意:02~03行都是为安装python-lxml包做准备.
如果是编译安装python-lxml,这些步骤必不可少.
接下来,进入到keystone/tools/目录,在此目录下,有一个pip-requires.
txt文件.
里面记录着Keystone所依赖的python包.
首先安装这些依赖包:~/keystone-2013.
1.
1/tools#pipinstall-rpip-requires(3)安装源码包当依赖包安装完成之后,进入源码主目录:~/keystone-2013.
1.
1#pythonsetup.
pybuildbuild命令会检查依赖是否安装完整.
如果build成功之后,便可以安装:~/keystone-2013.
1.
1#pythonsetup.
pydevelop由于keystone源码是留作开发或者测试使用,直接安装在当前目录,并不需要放至系统目录中.
如果是一些系统python包,比如python-django等,在安装这些包时,需要运行:~/keystone-2013.
1.
1#pythonsetup.
pyinstallinstall与develop的主要区别就在于:install会将python代码安装至系统目录,而develop则直接使用当前目录,以供开发测试使用.
第3章安装Keystone安全认证服务·83·3.
5.
2Keystone自动化安装通过上一小节的介绍,已经能够手动安装Keystone源码包了.
但是,对于自动化安装而言,这是远远不够的.
接下来,将介绍如何进行Keystone的自动化安装1.
安装分为以下几步:(1)init.
sh初始化系统环境,设置防火墙.
(2)配置localrc文件中的Keystone相关变量.
用户只需要配置此步骤则可,其他步骤不需要修改便可安装.
(3)运行keystone.
sh安装并测试Keystone服务.
(4)servicekeystonestatus查看运行状态(5)servicekeystonetest测试Keystone服务.
接下来讲解https://github.
com/JiYou/openstack/tree/master/chap03/keystone的安装脚本.
1.
配置环境变量安装之前,首先应该配置好localrc文件中必要的参数:01PIP_HOST=10.
239.
82.
179#安装python依赖包的源02MYSQL_KEYSTONE_USER=keystone#keystone连接MySQL时的用户名03MYSQL_KEYSTONE_PASSWORD=keystone_password#keystone连接MySQL的密码04KEYSTONE_HOST=10.
239.
82.
179#Keystone所在主机IP05ADMIN_PASSWORD=admin_user_password#设置Keystone管理员密码06ADMIN_TOKEN=admin_token#设置用token密码07SERVICE_TOKEN=$ADMIN_TOKEN#不要修改此行参数08ADMIN_USER=admin#管理员用户名,不建议修改此行09SERVICE_TENANT_NAME=service#Keystone管理服务的租户名注意:第01~06行可以根据自己的环境做相应的修改,而第07~09行不建议修改.
配置好localrc文件中的Keystone的相关参数之后,就可以安装Keystone了.
接下来讲解keystone.
sh脚本2,首先需要设置一些会影响安装的环境变量:01unsethttp_proxy02unsethttps_proxy03unsetftp_proxy04exportOS_USERNAME=""05exportOS_AUTH_KEY=""06exportOS_AUTH_TENANT=""07exportOS_STRATEGY=""08exportOS_AUTH_STRATEGY=""09exportOS_AUTH_URL=""10exportSERVICE_ENDPOINT=""1完整的keystone安装脚本位于https://github.
com/JiYou/openstack/blob/master/chap03/keystone/keystone.
sh.
Hostadvice主机目录对我们的服务进行了测试,然后给PQ.hosting颁发了十大WordPress托管奖。为此,宣布PQ.Hosting将在一周内进行折扣优惠,购买和续订虚拟服务器使用优惠码:Hostadvice ,全部优惠10%。PQ.hosting,国外商家,成天于2019年,正规公司,是全球互联网注册商协会 RIPE 的成员。主要是因为提供1Gbps带宽、不限流量的基于KVM虚拟的V...
IMIDC是一家香港本土运营商,商家名为彩虹数据(Rainbow Cloud),全线产品自营,自有IP网络资源等,提供的产品包括VPS主机、独立服务器、站群独立服务器等,数据中心区域包括香港、日本、台湾、美国和南非等地机房,CN2网络直连到中国大陆。目前主机商针对日本独立服务器做促销活动,而且提供/28 IPv4,国内直连带宽优惠后每月仅88美元起。JP Multiple IP Customize...
华纳云(HNCloud Limited)是一家专业的全球数据中心基础服务提供商,总部在香港,隶属于香港联合通讯国际有限公司,拥有香港政府颁发的商业登记证明,保证用户的安全性和合规性。 华纳云是APNIC 和 ARIN 会员单位。主要提供数据中心基础服务、互联网业务解决方案, 以及香港服务器租用、香港服务器托管、香港云服务器、美国云服务器,云计算、云安全技术研发等产品和服务。其中云服务器基于成熟的 ...