OpenStack Havana 云平台的部署和实施

一  基本安装环境:

硬件资源:服务器CPU需要支持虚拟化技术且在安装前需在BIOS设置中开启虚拟化功能,4网卡。

操作系统:debian7.4.0

在开始云平台的搭建工作前,还有一些服务器的基本配置要完成,包括网络的部署、系统的升级以及源地址的修改等等。

1.1  网络部署:

主机名

Eth0

Eth1

Eth2

(主控制节点)R320-1

10.9.32.1

10.0.0.10

10.8.8.1

(从控制节点)R320-2

10.9.32.2

10.0.0.20

10.8.8.2

(计算节点一)

R420-1

10.9.32.3

10.0.0.30

 

(计算节点二)R420-2

10.9.32.4

10.0.0.40

 

 

Eth0用于管理节点,Eth1用于组件间的消息通信,Eth2用作主备状态的心跳口。

其IP地址可根据实际需求进行修改。

1.2  调整源地址:

因为没有本地源,所以我们使用是网易的源地址。还有就是Havana的源仓库地址。

###Havana 源地址 ###

debhttp://archive.gplhost.com/debian havana main    

debhttp://archive.gplhost.com/debian havana-backports main

###网易源地址 ###   

debhttp://mirrors.163.com/debian wheezy main non-free contrib  

1.3  系统升级:

执行以下命令:

apt-getupdate && apt-get install gplhost-archive-keyring 

//安装仓库密钥

apt-getupdate && apt-get dist-upgrade //升级系统软件

1.4  开启网络路由:

编辑 /etc/sysctl.conf文件,去掉以下俩行注释:

net.ipv4.ip_forward=1

net.ipv6.conf.all.forwarding=1

保存退出,执行命令:sysctl  –p ,使设置生效。

1.5  NTP时间服务的安装部署:

安装命令:apt-getinstall ntp ntpdate

调整/etc/ntp.conf配置文件:

#server0.debian.pool.ntp.org iburst

#server1.debian.pool.ntp.org iburst

#server2.debian.pool.ntp.org iburst

#server3.debian.pool.ntp.org iburst

server 10.9.32.1  //这是本地时间服务器主机IP,可以根据实际情况进行调整。

重启NTP 服务:

service ntp restart

注意:一定要保证havana的所有服务主机时间保持一致,否者会出错。

 

1.6  Mysql 客户端的安装部署

执行命令:apt-getinstall mysql-client python-mysqldb

因为Havana的各个组件都要访问数据库,所以除了mysql服务器本身外,其他的组件都必须安装mysql客户端。

 


 

Havana安装架构:

Havana控制节点服务组件主要包括:mysql、keystone、rabbitmq-server

glance、neutron-server、nova(nova-api | nova-conductor | nova-consol

eauth| nova-scheduler | nova-novncproxy)。

Havana 计算节点服务组件主要包括:nova-compute、kvm、libvirt-bin。

为了实现系统高可用,控制节点的各服务都是安装在虚拟机中。

在以下组件的安装过程中都不需要安装数据库,建议安装完成后使用dpkg-reconfigure 命令完成数据库数据的导入。


 

二  控制节点的服务安装:

 

2.1  Rabbitmtq-server服务的安装部署:

    RabbitMQ用来提供消息队列,做调度使用,是各组件实现通信的中枢。

执行命令:apt-getinstall rabbitmq-server

默认的guest管理用户不支持远程连接,只能实现本地服务间的消息通信,而新建的用户则没有这个限制。

因为控制节点各组件都运行在相应的虚拟机中,所以这里我们要新建一个用户以及创建相应密码:

执行命令:rabbitmqctl add_useradmin stack   

            rabbitmqctlset-permissions -p / admin ".*"  ".*"  ".*"

这里我们新建了admin用户,密码:stack ,并赋予了其管理权限。如果要修改用户密码可以执行:rabbitmqctl change_password admin password命令。

配置完成后,重启该服务:

servicerabbitmq-server restart

 

2.2  Mysql服务的安装部署:

安装命令:apt-getinstall python-mysqldb  mysql-server

安装过程会提示你输入数据库管理用户root的密码,可根据自己的设置自行输入。

安装完成后,编辑/etc/mysql/my.cnf, 允许网络访问mysql:

#bind-address= 127.0.0.1

bind-address= 0.0.0.0

重启mysql服务

servicemysql restart

为了方便,可以把phpmyadmin装上,这样能比较方便的通过web来管理数据库,这步不是必须的,可以选择安装与否

apt-getinstall phpmyadmin

安装过程弹窗选择apache,创建登录密码,安装完成。

网页登陆:http://10.9.30.120/phpmyadmin,默认80端口,注意apache监听的端口号要为默认的80端口,默认登陆名:phpmyadmin

登陆密码:admin。

创建相关数据库和用户:

应用数据库

数据库用户

密码

mysql

root

stack

nova

nova

stack

glance

glance

stack

keystone

keystone

stack

neutron

neutron

stack

cinder

cinder

stack

编写mysql.sh配置脚本:

mysql -u root<<EOF

CREATE DATABASE keystone;

GRANT ALL PRIVILEGES ON keystone.* TO'keystone'@'localhost' IDENTIFIED BY 'stack';

GRANT ALL PRIVILEGES ON keystone.* TO'keystone'@'%' IDENTIFIED BY 'stack';

CREATE DATABASE nova;

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost'IDENTIFIED BY 'stack';

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%'IDENTIFIED BY 'stack';

CREATE DATABASE cinder;

GRANT ALL PRIVILEGES ON cinder.* TO'cinder'@'localhost' IDENTIFIED BY 'stack';

GRANT ALL PRIVILEGES ON cinder.* TO'cinder'@'%' IDENTIFIED BY 'stack';

CREATE DATABASE glance;

GRANT ALL PRIVILEGES ON glance.* TO'glance'@'localhost' IDENTIFIED BY 'stack';

GRANT ALL PRIVILEGES ON glance.* TO'glance'@'%' IDENTIFIED BY 'stack';

CREATE DATABASE neutron;

GRANT ALL PRIVILEGES ON neutron.* TO'neutron'@'localhost' IDENTIFIED BY 'stack';

GRANT ALL PRIVILEGES ON neutron.* TO'neutron'@'%' IDENTIFIED BY 'stack';

FLUSH PRIVILEGES;

EOF

执行脚本,完成数据库的创建和用户的添加:

./mysql.sh

 

2.3  Keystone服务的安装部署:

安装命令:apt-getinstall keystone

          dpkg-reconfigure keystone    //配置数据库

修改keystone配置文件,有四处可能需要修改,编辑/etc/keystone/

keystone.conf:

[DEFAULT]

#admin_token= ADMIN

admin_token= admin

[sql]

#connection= sqlite:var/lib/keystone/keystone.db

connection= mysql://keystone:stack@10.9.30.120/keystone

[catalog]

driver =keystone.catalog.backends.sql.Catalog

#driver =keystone.catalog.backends.templated.TemplatedCatalog

#template_file =/etc/keystone/default_catalog.templates

[signing]

#Deprecated in favor of provider in the [token] section

#Allowed values are PKI or UUID

token_format= UUID    //默认为PKI密钥

重启服务:

servicekeystone restart

同步keystone的数据库:

keystone-managedb_sync

设置环境变量:

修改/root/.bashrc文件,根据实际修改并添加环境变量:

####administrative user####

export OS_SERVICE_TOKEN=admin

export OS_USERNAME=admin

export OS_PASSWORD=admin

export OS_TENANT_NAME=admin

exportOS_SERVICE_ENDPOINT="http://10.0.0.18:35357/v2.0"   

 执行命令使变量生效:

source  /root/.bashrc

导入数据和endpoint:

  为了方便,你可以直接执行当前文件夹里的keystone_data.sh配置脚本来进行keystone项目和用户的全部设置,包括用户添加,权限分配,端口设置等。

脚本执行前,应该根据自己的实际情形修改脚本中相应服务的IP地址、dashboard密码、以及token令牌,而后再执行命令:

chmod +xkeystone_data.sh      //给脚本赋予执行权限

./keystone_data.sh               //执行脚本

没任何输出,就表示正确,可以通过下面命令检查:

echo $?

显示0,就表示脚本正确运行,千万不要重复运行脚本。

可以使用下面命令来查看结果:

keystoneendpoint-list

keystonetenant-list

keystoneuser-list

keystonerole-list

2.4  Glance服务的安装部署:

执行命令:apt-getinstall glance python-glanceclient

          dpkg-reconfigure glance-common    //配置数据库

 

编辑/etc/glance/glance-api-paste.ini,/etc/glance/glance-reg

istry-paste.ini,两个文件,都是修改文档最后3行:

#admin_tenant_name= %SERVICE_TENANT_NAME%

#admin_user= %SERVICE_USER%

#admin_password= %SERVICE_PASSWORD%

admin_tenant_name= service

admin_user= glance

admin_password= stack

编辑/etc/glance/glance-api.conf和/etc/glance/glance-registry.conf,在【DEFAULT】中改成使用mysql验证:

[DEFAULT]

#sql_connection= sqlite:var/lib/glance/glance.sqlite

sql_connection= mysql://glance:stack@10.0.0.15/glance

同时,在/etc/glance/glance-api.conf中,启用rabbit消息中枢和修改默认的镜像存储位置:

#####NotificationSystem Options####

notifier_strategy= rabbit

取消其下方rabbitmq选项的所有注释

####FilesystemStore Options####

filesystem_store_datadir= /home/glusterfs/glance

修改本地的存储位置(Glance默认存储后端为本地文件存储(file))

 

同步数据库

glance-manageversion_control 0

glance-managedb_sync

重启服务:

serviceglance-api restart && service glance-registry restart

验证glance服务是否正常  这个如果添加了环境变量 可以直接运行:

glance index

没有输出,表示正常,因为目前还没有镜像。

镜像上传:

glance add name="Ubuntu 12.04" is_public=true container_format=ovf disk_format=qcow2 < ubuntu-12.04-server-cloudimg-amd64-disk1.img

 

2.5  Nova服务的安装部署:

执行命令:apt-get installnova-consoleproxy nova-api nova-cert

nova-conductornova-consoleauth nova-scheduler python-novaclient 

python-novanova-common novnc nova-novncproxy  //安装nova组件

程序安装过程会提示你安装nova数据库,这里选择不创建,安装完成后,可以使用dpkg-reconfigure nova-common 命令重新配置数据库的相关信息。          

执行命令:dpkg-reconfigurenova-common     //配置nova数据库

数据库配置完成后,编辑/etc/nova/nova.conf 配置文件,具体可参考当前文件夹下的nova.conf配置文档,值得一提的就是其中VNC的配置部分,默认的VNC使用的是SPICE,如果需要使用网页VNC的话,就要相应的修改配置文件,开启novnc服务,具体如下:

第一步:编辑/etc/default/nova-consoleproxy文件:

#NOVA_CONSOLE_PROXY_TYPE=spicehtml5   //默认使用SPICE方式

NOVA_CONSOLE_PROXY_TYPE=novnc

第二步:编辑/etc/nova/nova.conf,修改VNC 相关选项:

#vnc_enabled=true

novnc_enable=true

vncserver_proxyclient_address=10.0.0.43   //本地主机IP 

novncproxy_base_url=http://10.9.32.63:6080/vnc_auto.html 

//此处应该为控制节点的公网IP

vncserver_listen=0.0.0.0    //不能设具体的主机IP,方便于后续的虚拟机动态迁移。

同时,注释掉nova.conf中最后面的与SPICE相关的配置文件。

 

当nova.conf配置文件修改完成后,重启所有服务

cd/etc/init.d/;  for i in $( ls nova-* );do service $i restart; done

运行nova-manage service list 查看各服务的运行状况, 全为笑脸-_-,表示运行正常。

同步数据库:

nova-managedb sync

设置目录权限:

chown -Rnova:nova /etc/nova

chmod 644/etc/nova/nova.conf

至此,nova计算服务配置完成。

 

2.6  Cinder服务的安装部署:

 

执行命令:apt-getinstall cinder-api cinder-scheduler cinder-volume

          dpkg-reconfigure cinder-common   //配置cinder数据库

Cinder允许同时使用多个存储后端,如果你使用LVM做cinder的后端卷存储的话,你还需要在cinder节点安装 iscsitarget、iscsitarget-dkms作为ISCSI服务端 ,同时在每个需要挂载LVM卷的计算机点上,你都需要安装open-iscsi客户端,需要注意的是,默认的ISCSI服务由tgt提供,iscsitarget和tgt占用的是同一个端口(3260),所以你就需要在cinder配置文件里指定使用的是何种ISCSI服务端,不然俩者会抢占端口,发生冲突。

具体指定由cinder.conf中的iscsi_helper选项来确定,如果iscsi_helper = ietadm 则由iscsitarget提供服务,相应的;如果iscsi_helper = tgtadm,则由tgt提供服务。

Cinder组件安装完成后,需要编辑cinder.conf配置文件,默认的配置文件比较全而杂,实际上很多功能用不着,其可以根据自己的需要进行编写,具体配置可参考本地文件夹下的cinder.conf文件。

同步数据库,建立数据库列表:

cinder-managedb sync

重启cinder的所有服务:

cd/etc/init.d/;  for i in $( ls cinder-* );do service $i restart; done

查看cinder各服务状态:

cinder-manageservice list

全文笑脸-_-的话,表示服务已正常启动。

如果使用iscsitarget,则安装完成后还需要修改/etc/default/iscsitarget默认文件,启动iscsitarget服务:

sed -i  's/false/true/g'  /etc/default/iscsitarget

重启iscsitarget服务

serviceiscsitarget restart

创建物理卷、卷组:

# pvcreate/dev/sdb

# vgcreatecinder-volumes /dev/sdb   \\卷组名是由配置文件指定的

# losetup/dev/loop/  cinder-volumes  \\挂载卷组

卷组扩容:

# pvcreate/dev/sdc       \\创建物理卷

# vgextendcinder-volumes  /dev/sdc

如果没有提前划分好的LVM分区的话,可以dd一个临时的虚拟磁盘文件做测试使用。

#ddif=/dev/zero of=cinder-volumes bs=1 count=0 seek=50G

如果使用glusterfs作为存储后端的话,受限于kvm的内核版本,可能需要修改openstack计算节点的nova源码,才能够正常挂载glusterfs卷和使用glusterfs卷中的镜像,具体详见openstack的问题处理文档。

 

2.7  Neutron服务的安装部署:

执行命令:apt-getinstall neutron-server

          dpkg-reconfigure neutron-common

编辑/etc/neutron/neutron.conf配置文件:

####开启rabbit消息中枢####

rpc_backend= neutron.openstack.common.rpc.impl_kombu

清除关于rabbit的所有选项注释并修改

####修改keystone验证选项###

[keystone_authtoken]

auth_host =10.0.0.18

admin_tenant_name= service

admin_user= neutron

admin_password= stack

####修改数据库选项####

connection= mysql://neutron:stack@10.0.0.15:3306/neutron

编辑/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini配置文件,指明VLAN模式和使用physnet1作为外部vlan通道:

 tenant_network_type = vlan

integration_bridge= br-int

network_vlan_ranges= physnet1:1:4094

重启服务:

# service neutron-serverrestart

 

2.8  Horizon服务的安装部署:

执行命令:apt-getinstall openstack-dashboard python-memcache

memcachedlibapache2-mod-wsgi openstack-dashboard-apache

     安装过程可能会弹出(1)horizon是否使用80默认端口(2)浏览器访问的时候是否使用安全协议(http or https)的选项,可以根据自己的需求进行选择,建议都选择Yes 。

编辑/etc/openstack-dashboard/local_settings.py配置文件,调整其中的CACHES['default']['LOCATION']选项,使其与/etc/memcached.conf中的配置保持一致,用于启用memcache组件缓存页面。

CACHES= {

'default':{

'BACKEND': 'django.core.cache.backends.memcached. MemcachedCache',

'LOCATION': '127.0.0.1:11211'

}

}

 

同时修改其中指定的验证主机IP:

OPENSTACK_HOST= "10.0.0.18"       //keystone主机IP地址

重启服务:    

# serviceapache2 restart

# servicememcached restart

现在,你就可以使用浏览器去访问Horizon仪表盘了,地址为:

https://Horizon IP:Port   //Port默认为80端口

如果安装时没有选择使用安全协议的话:地址要改为:

http://Horizon IP:Port    //Port默认为80端口

 


 

三  计算节点的服务安装:

 

3.1  基础服务的安装部署:

    执行命令:apt-get install kvmlibvirt-bin emacs open-iscsi sysfstoolssg3-utils multipath-tools

KVM是一个开源的系统虚拟化模块,是实现云的基础,也可以选择使用其他虚拟化模块,比如XEN,Emacs 是一个强大的文本编辑器,open-iscsi是ISCSI服务的客户端,用来提供远程的逻辑卷服务 ,sysfstools sg3-utils Multipath-tools是系统工具包。

安装完成后,加载kvm,重启libvirt:

modprobe -a kvm

service libvirt-bin restart

 

3.2  Nova-compute服务的安装部署:

执行命令:apt-getinstall nova-compute-kvm python-guestfs

          dpkg-reconfigure nova-common    //配置nova数据库

编辑/etc/nova/nova.c onf配置文件,具体可参考本地文件夹下的相关文档,需要关注的就是VNC的配置部分,其与控制节点的配置有点区别,还有就是注意修改iscsi配置项,iscsi_helper=iscsiadm,对应的cinder服务端是iscsitarget而不是tgt。

nova.conf配置文件编辑完成后,重启服务:

service nova-compute restart

3.3  OVS服务的安装部署

执行命令:apt-get install neutron-plugin-openvswitch-agent open

vswitch-switch openvswitch-datapath-dkms

         dpkg-reconfigureneutron-common

编辑/etc/neutron/neutron.conf和/etc/neutron/plugins/openvswitch

/ovs_neutron_plugin.ini配置文件,具体可以参考前几节讲的neutron服务器配置,主要需要修改的地方包括rabbitmq选项、keystone验证选项、Mysql数据库选项等。

重启服务:

service openvswitch-switch restart
创建网桥、绑定网卡:

# ovs-vsctl add-br br-int

# ovs-vsctl add-br br-eth1

#ovs-vsctl add-port br-eth1 eth1

编辑/etc/network/interfaces配置文件,修改eth0网卡的IP设置:

# The primary network interface

auto br-eth1

iface br-eth1 inet static

address 10.9.32.3

netmask 255.255.255.0

gateway 10.9.32.254

 

auto eth1

iface eth1 inet manual

up ip address add 0/0 dev $IFACE

up ip link set $IFACE up

down ip link set $IFACE down

移除eth0 网卡的IP地址,将其配置给br-eth1外部网桥:

 ip addr del 10.9.32.3/24 dev eth1

ip addr add10.9.32.3/24 dev br-eth1

重启网卡:

servicenetworking restart

重启OVS代理服务:

serviceneutron-plugin-openvswitch-agent restart

配置路由规则,以便镜像可以获取元数据:

iptables -tnat -A PREROUTING -d 169.254.169.254/32 -p tcp -m tcp --dport 80 -j DNAT--to-destination $NOVA_API_IP:8775

 


四  网络节点的服务安装:

 

4.1  网络代理服务的安装部署:

执行命令:apt-getinstall openvswitch-switch neutron-plugin-openv

switch-agentneutron-dhcp-agent neutron-l3-agent

重启Open vSwitch:

service openvswitch-switch start

创建网桥、绑定网卡:

ovs-vsctl add-br br-int

ovs-vsctl add-br br-ex            //三级路由代理的外部端口

ovs-vsctl add-br br-eth1          //网络节点和计算节点的vlan端口

ovs-vsctl add-port br-ex eth0     //绑定eth0网口到br-ex

ovs-vsctl add-port br-eth1 eth1   //绑定eth1网口到br-eth1

升级网络配置文件:/etc/neutron/neutron.conf:

rabbit_password = guest

rabbit_host = controller

rabbit_password = RABBIT_PASS

[database]

connection=mysql://neutron:NEUTRON_DBPASS@MysqlIP:3306/neutron

编辑/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini配置文件:

[ovs]

tenant_network_type=vlan

network_vlan_ranges = physnet1:1:4094

bridge_mappings = physnet1:br-eth1

编辑三级路由代理配置文件,增加以下行:

[DEFAULT]

auth_url = http://KeystoneIP:35357/v2.0

admin_tenant_name = service

admin_user = neutron

admin_password = NEUTRON_PASS

metadata_ip = Nova_API_IP

use_namespaces = False

编辑API配置文件,增加以下行:

[DEFAULT]

auth_host = KeystoneIP

admin_tenant_name = service

admin_user = neutron

admin_password = NEUTRON_PASS

编辑dhcp配置文件:/etc/neutron/dhcp_agent.ini:

debug = True

use_namespaces = False       //多命名空间,需要系统支持;

重启网络服务:

#service neutron-plugin-openvswitch-agent start

# service neutron-dhcp-agent restart

# service neutron-l3-agent restart

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值