Openstack 是一款开源的云计算系统,本文档将介绍一种企业开源云的应用方案,此方案是使用openstack 搭建私有云,利用iptables nat转发使用公网访问私有云。
结构如下:
图2
安装openstack compute安装前规划
安装openstack前需要对openstack进行规划:
服务器的规划:
服务器 | 用途 | 说明 |
121.194.3.225/232 | Compute controller | 用于控制compute以及NAT转发控制,另外安装web管理API |
121.194.3.215 | Compute node /storerage | Compute 节点,云存储共享 |
网络的规划:
网络 | 用途 | 说明 |
192.168.0.0/24 | 云项目cernet的私有IP段 | 使用flatdhcp模式 |
192.168.1.0/24 | 云项目cernet2的私有IP段 | 使用flatdhcp模式 |
注意:
Openstack 支持3种网络模式,flat/flat dhcp/vlan 其中flat模式为默认模式,需要在网络端口配置网桥,使用网桥将私网和外网连接通讯,本文档为了方便使用的是flatdhcp模式,这种模式的私网IP地址是自动分配的。
安装准备2台服务器都需要安装ubuntu10 server 版本,并保证网络畅通。需要提前安装数据库mysql
安装软件安装可以有很多种方法,官方提供的有脚本安装和手工安装,为了了解整个过程,这里采用手工安装服务器系统。下面将介绍一步一步安装的过程:
2.3.1 安装基本包Nova PPA配置:
#apt-get install python-software-properties
#add-apt-repository ppa:nova-core/trunk
#apt-get update
#addgroup nova
2.3.3 安装数据库
安装MYSQL前设置:
bash
MYSQL_PASS=nova
cat <
mysql-server-5.1 mysql-server/root_passwordpassword $MYSQL_PASS
mysql-server-5.1mysql-server/root_password_again password $MYSQL_PASS
mysql-server-5.1 mysql-server/start_on_bootboolean true
MYSQL_PRESEED
#apt-get install mysql-server
设置mysql的root密码为nova
#sed -i 's/127.0.0.1/0.0.0.0/g'/etc/mysql/my.cnf
#service mysql restart
#mysql -uroot -pnova -e 'CREATE DATABASEnova;'
#mysql -uroot -pnova -e "GRANT ALLPRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;"
#mysql -uroot -pnova -e "SET PASSWORDFOR 'root'@'%' = PASSWORD('nova');"
#apt-get install -y rabbitmq-server
#apt-get install -y python-greenletpython-mysqldb
#apt-get install -y nova-common nova-docpython-nova nova-api
#apt-get install -y nova-networknova-objectstore nova-scheduler nova-compute
#apt-get install -y euca2ools unzip
# modprobe kvm
# modprobe nbd
#chgrp kvm /dev/kvm
#chmod g+rwx /dev/kvm
2.3.5 安装compute node
在node服务器上,安装所有的control端的包
#apt-get install python-greenletpython-mysqldb python-nova nova-common nova-doc nova-api nova-networknova-objectstore nova-scheduler nova-compute rabbitmq-server euca2ools unzip
重启服务:
#libvirtd restart; restart nova-network;restart nova-compute;
#restart nova-api; restart nova-objectstore;restart nova-scheduler
配置nova.conf
#addgroup nova
添加配置信息:
--daemonize=1
--s3_host=121.194.3.215
--rabbit_host=121.194.3.215
--cc_host=121.194.3.215
--ec2_url=http://121.194.3.215:8773/services/Cloud
--fixed_range=192.168.0.0/12
--network_size=8
--FAKE_subdomain=ec2
--routing_source_ip=121.194.3.215
--sql_connection=mysql://root:[email protected]/nova
--network_manager=nova.network.manager.FlatDHCPManager
--flat_network_dhcp_start=192.168.1.2
--public_interface=eth0
--flat_interface=eth0
--routing_source_ip=121.194.3.215
--flat_injected=False
其中121.194.3.215
#chown -R root:nova /etc/nova
#chmod 644 /etc/nova/nova.conf
#nova-manage db sync
创建管理用户
#nova-manage user admin root
创建project
#nova-manage project create cernet root
创建network
#nova-manage network create 192.168.1.0/24 1255
#mkdir -p /root/creds
#nova-manage project zipfile cernet root/root/creds/novacreds.zip
#unzip /root/creds/novacreds.zip -d/root/creds/
# . /root/creds/novarc
或者将novarc的环境变量加入到系统初始环境变量文件中
#cat /root/creds/novarc >> ~/.bashrc
#source ~/.bashrc
基本服务:
#euca-authorize -P icmp -t -1:-1 default
#euca-authorize -P tcp -p 22 default
对外扩展服务(可以根据需要定制):
#euca-authorize -P tcp –p 80 default
#euca-authorize -P tcp –p 21 default
#euca-authorize -P tcp –p 8080 default
#euca-authoriz -P tcp –p 3306 default
配置完毕后重启服务:
#killall dnsmasq
#service nova-network restart
下载
安装:
# uec-publish-tarball ubuntu-10.04-server-uec-amd64.tar.gzdub-bucket x86_64
查看安装的images
# euca-describe-images
可以看到$emi
操作创建key:
#euca-add-keypair mykey > mykey.priv
#chmod 600 mykey.priv
启动:
# euca-run-instances $emi -k mykey-t m1.tiny
查看instance
#euca-describe-instances
登录instance
#ssh -i /root/creds/mykey.privroot@instanceip
删除instance
# euca-terminate-instances
#apt-get install bzr
更新包:
#mkdir src
#cd src
# mkdir django-nova
#cd django-nova
#bzr init-repo .
# bzr branch lp:django-nova/trunk
#cd ..
# mkdir openstack-dashboard
# cd openstack-dashboard
# bzr init-repo .
# bzr branch lp:openstack-dashboard trunk
# easy_install virtualenv
# python tools/install_venv.py
#cd local
# cp local_settings.py.examplelocal_settings.py
#vi local_settings.py
找到选项修改成:(其他的不变)
NOVA_DEFAULT_ENDPOINT ='http://localhost:8773/services/Cloud'
NOVA_DEFAULT_REGION = 'nova'
NOVA_ACCESS_KEY ='3305597a-baec-499a-9ce8-9743037683ff:cernet'
NOVA_SECRET_KEY ='9013b44f-7f74-4c67-a743-49c364e8289e'
NOVA_ADMIN_USER = 'root'
NOVA_PROJECT = 'cernet'
# tools/with_venv.sh dashboard/manage.pysyncdb
根据提示进行配置,需要设置界面管理的超级账号和密码,这里设置为root/welldone
安装完成界面如下:
最后一行提示为No fixtures found.
启动接口:
#tools/with_venv.sh dashboard/manage.pyrunserver 0.0.0.0:80
访问接口:
打开界面如下:
映射准备工作
网络准备:
需要在公网端口上绑定多个IP,使用NAT方式访问网络
系统配置:
#sysctl -w net.ipv4.ip_forward=1
重启系统
#init 6
#iptables -t nat -A SNAT -s 192.168.0.8/32 -jSNAT --to-source 121.194.3.232
说明:
192.168.0.8是instance的私网IP地址
121.194.3.232为绑定到公网端口的IP地址
#iptables -t nat -A OUTPUT -p tcp -d121.194.3.232 --dport 80 -j DNAT --to-destination 192.168.0.8:80
#iptables -t nat -A PREROUTING -p tcp -d121.194.3.232 --dport 80 -j DNAT --to-destination 192.168.0.8:80
如果提示没有SNAT OUTPUT等chain,使用下面命令
#nova-manage floating create ubuntu-server225121.194.3.0/26
注意:ubuntu-server225为服务器的hostname
# euca-allocate-address121.194.3.232
# euca-associate-address-i i-1 121.194.3.232
#iptables –t nat -A nova-network-OUTPUT -d121.194.3.232/32 –p tcp –dport 80 -j DNAT --to-destination 192.168.1.2:80
#iptables –t nat -A nova-network-PREROUTING -d 121.194.3.232/32 –p tcp –dport80 -j DNAT --to-destination 192.168.1.2:80
说明:
将80端口映射到外部进行访问,也可以全部映射,一般不建议全部端口映射
全部映射:
-A nova-network-OUTPUT -d 121.194.3.232/32 -jDNAT --to-destination 192.168.1.2
-A nova-network-PREROUTING -d 121.194.3.232/32 -j DNAT --to-destination192.168.1.2
#iptables -t nat -A OUTPUT -d121.194.3.232/32 -j DNAT --to-destination 192.168.0.8
#iptables -t nat -A PREROUTING -d121.194.3.232/32 -j DNAT --to-destination 192.168.0.8
#kvm-ok
如果不支持:
INFO: Your CPU does not support KVMextensions
KVM acceleration can NOT be used
如果支持:
INFO: Your CPU supports KVM extensions
INFO: /dev/kvm exists
KVM acceleration can be used
可以执行下面命令进行尝试
#nova-manage floating create my-hostname 121.194.3.232/32
#euca-allocate-address 121.194.3.232
#euca-associate-address -i i-1 121.194.3.232