`

unbuntu 中搭建私有的IAAS开源云平台

阅读更多
经过3个星期的尝试怎么成功搭建了属于自己的私有云平台。在这里首先谢谢vpsee这个网站,我主要参考的是这个上面的内容。
现在介绍一下我的搭建环境,我用的操作系统是ubuntu-11.04-desktop-amd64.iso 。64位的操作系统,注意你的机器如果不支持64位的,那么请安装32位的,因为在后面发布镜像的时候要和你的操作系统的位数匹配。
笔者的网络是172.16.200.128/25 ,笔者的ip是172.16.200.187,子网掩码是172.16.200.192,网关是172.16.200.190,后面在配置nova的网络的时候要用到


安装完基本的 Ubuntu 11.04 Server 系统后升级和更新整个系统,安装完 bridge-utils 包后重启系统:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install bridge-utils
sudo reboot

安装 NTP 服务

OpenStack Nova 需要 NTP 服务器来保持所有节点服务器(Cloud Compute)的时间同步,所以需要在前端控制服务器(Cloud Controller)上安装 NTP 服务器,然后在节点服务器上安装 NTP 客户端保持与前端的同步:
sudo apt-get install ntp
sudo vi /etc/ntp.conf
打开后在文件里面添加下面2行
server 127.127.1.0
fudge 127.127.1.0 stratum 10
重新启动ntp服务
$ sudo /etc/init.d/ntp restart

安装和配置 MySQL 数据库

OpenStack Nova 需要数据库的支持,这里选用 MySQL(当然也可以用其他的数据库,比如 PostgreSQL 等):
sudo apt-get install mysql-server
修改 MySQL 绑定地址,以便其他的节点服务器也能访问这个数据库:

sudo vi /etc/mysql/my.cnf
...
#bind-address           = 127.0.0.1
bind-address            = 0.0.0.0
...
重新启动mysql服务
sudo /etc/init.d/mysql restart

创建一个名为 nova 的数据库,并设置 root 从任何 IP 访问的权限和密码:

sudo mysql -uroot -padmin -e 'CREATE DATABASE nova;'
sudo mysql -uroot -padmin -e "GRANT ALL PRIVILEGES ON *.* TO \
'root'@'%' WITH GRANT OPTION;"
sudo mysql -uroot -padmin -e "SET PASSWORD FOR \
'root'@'%' = PASSWORD('admin');"

这里的admin是你安装mysql时候设置的密码

安装 Glance 镜像服务
Glance 是个镜像服务器,用来给 OpenStack Nova 提供操作系统镜像(image)服务,提供可选择的操作系统模版(镜像)。
sudo apt-get install glance
安装 OpenStack Novaapt
sudo apt-get install rabbitmq-server nova-common
sudo apt-get install nova-doc python-nova nova-api nova-network nova-volume
sudo apt-get install nova-objectstore nova-scheduler nova-compute
sudo apt-get install -y euca2ools
sudo apt-get install -y unzip

配置nova
sudo vi /etc/nova/nova.conf
修改文件内容
--dhcpbridge_flagfile=/etc/nova/nova.conf
--dhcpbridge=/usr/bin/nova-dhcpbridge
--logdir=/var/log/nova
--state_path=/var/lib/nova
--lock_path=/var/lock/nova
--verbose

--s3_host=172.16.200.187
--rabbit_host=172.16.200.187
--cc_host=172.16.200.187
--ec2_url=http://172.16.200.187:8773/services/Cloud
--my_ip=172.16.200.187
--network_manager=nova.network.manager.FlatManager
--fixed_range=172.16.200.128/24
--num_networks=1
--network_size=12
--flat_injected=true
--FAKE_subdomain=ec2
--routing_source_ip=172.16.200.187
--sql_connection=mysql://root:root@172.16.200.187/nova
--glance_host=172.16.200.187
--image_service=nova.image.glance.GlanceImageService

笔者这里compute node ,controll node在同一个节点,这里的网络管理可以是FlatManager,也可以是FlatDHCPManager的方式,根据你自己的情况而定

配置网桥:

$ sudo vi /etc/network/interfaces
文件内容如下:
auto lo
iface lo inet loopback

auto br100
iface br100 inet static
address 172.16.200.187
netmask 255.255.255.192
gateway 172.16.200.190
bridge_ports eth0
bridge_stp off
bridge_maxwait 0
bridge_fd 0
修改网络配置文件后要重新启动网络服务
sudo /etc/init.d/networking restart


重启 nova 相关服务以便设置生效:

sudo restart libvirt-bin;
sudo restart nova-network;
sudo restart nova-compute;
sudo restart nova-api;
sudo restart nova-objectstore;
sudo restart nova-scheduler;
sudo restart nova-volume;
sudo restart glance-api;
sudo restart glance-registry

使用 Nova
开始使用 Nova 前需要创建 nova 数据库表、创建网络、创建管理员帐号、创建云并联到刚才创建的管理员上:
sudo nova-manage db sync
sudo nova-manage network create 172.16.200.128/25 1 128
为了使实例开始的ip地址为我们局域网可用的ip地址范围内,可用修改fixed_ips这个数据表
将字段reserved先全部保留,以后分配我们的ip地址
mysql -uroot -padmin;
mysql> use nova;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> update fixed_ips set reserved=1;
Query OK, 126 rows affected (0.00 sec)
Rows matched: 128  Changed: 126  Warnings: 0

mysql> update fixed_ips set reserved=0 where address in('172.16.200.180','172.16.200.181','172.16.200.182','172.16.200.183','172.16.200.184','172.16.200.185','172.16.200.186','172.16.200.188');
Query OK, 8 rows affected (0.00 sec)
Rows matched: 8  Changed: 8  Warnings: 0

mysql>exit;
注意上面的的ip地址为172.16.200.180-188要改成你自己网络的ip地址
sudo nova-manage user admin chen
export EC2_ACCESS_KEY=dbdfb8f2-d6b4-4ad9-a755-9a88b9418523
export EC2_SECRET_KEY=aaa066fe-64da-42a9-ab83-577d4ba2a817

sudo nova-manage project create mycloud chen

因为多个管理员可以创建多个不同的云,所以某个云的管理员需要特定的权限才能访问和管理自己的 Nova 云,创建权限信息,并解压到自己的目录里,需要注意的是每次使用 nova 管理云的时候都需要读取 novarc 里面的配置信息:
sudo adduser chen
sudo chown -R root:chen /etc/nova
sudo chmod 644 /etc/nova/nova.conf
$ mkdir /home/chen/creds
$ sudo nova-manage project zipfile mycloud chen /home/chen/creds/novacreds.zip

$ cd /home/chen/creds
$ unzip novacreds.zip
$ sudo chown -R chen:chen /home/chen/creds/

$ source /home/chen/creds/novarc

每次用 nova 的时候都要用到 novarc 里面的环境变量,每次 source novarc 很麻烦,所以最好加到 .bashrc 里面:

$ cat  /home/chen/creds/novarc >> /home/chen/.bashrc
$ source /home/chen/.bashrc

再次重启 nova 相关的所有服务:

sudo restart libvirt-bin;
sudo restart nova-network;
sudo restart nova-compute;
sudo restart nova-api;
sudo restart nova-objectstore;
sudo restart nova-scheduler;
sudo restart nova-volume;
sudo restart glance-api;
sudo restart glance-registry

如果一切正常的话,应该可以打印出如下的类似信息:

euca-describe-availability-zones verbose
AVAILABILITYZONE nova available
AVAILABILITYZONE |- node00
AVAILABILITYZONE | |- nova-scheduler enabled :-) 2011-05-22 10:32:31
AVAILABILITYZONE | |- nova-network enabled :-) 2011-05-22 10:32:32
AVAILABILITYZONE | |- nova-compute enabled :-) 2011-05-22 10:32:24

启动第一个实例

启动实例之前需要先上传一个系统模版,我们称之为镜像(image)

wget http://uec-images.ubuntu.com/releases/10.04/release/ubuntu-10.10-server-cloudimg-amd64.tar.gz

注意如果上面的链接说找不到的时候,你可以直接在浏览器里面输入http://uec-images.ubuntu.com/releases/10.04/release/ 。打开后里面有很多的版本的镜像模板,根据自己的需求去选择。
接下来是发布镜像模板
uec-publish-tarball ubuntu-10.10-server-cloudimg-amd64.tar.gz ubunt-server-10.10-64
2011年 10月 10日 星期一 19:57:39 CST: ====== extracting image ======
Warning: no ramdisk found, assuming '--ramdisk none'
kernel : maverick-server-cloudimg-amd64-vmlinuz-virtual
ramdisk: none
image  : maverick-server-cloudimg-amd64.img
2011年 10月 10日 星期一 19:58:02 CST: ====== bundle/upload kernel ======
2011年 10月 10日 星期一 19:58:04 CST: ====== bundle/upload image ======
2011年 10月 10日 星期一 19:59:41 CST: ====== done ======
emi="ami-00000002"; eri="none"; eki="aki-00000001";

列出云里现有的可以加载的镜像,并以某个镜像(比如编号为 ami-00000002)为模版启动一个实例(操作系统):

$ euca-describe-images
chen@ubuntu:~/creds$ euca-describe-images
IMAGE aki-00000001 ubunt-server-10.10-64/maverick-server-cloudimg-amd64-vmlinuz-virtual.manifest.xml available public x86_64 kernel
IMAGE ami-00000002 ubunt-server-10.10-64/maverick-server-cloudimg-amd64.img.manifest.xml available public x86_64 machine aki-00000001

为ssh创建安全认证
euca-add-keypair mykey > mykey.priv
sudo chmod 600 mykey.priv
euca-run-instances -k mykey -t m1.tiny ami-00000002
chen@ubuntu:~/creds$ euca-run-instances -k mykey -t m1.tiny ami-00000002
RESERVATION r-oqeuo76p mycloud default
INSTANCE i-00000001 ami-00000002 scheduling mykey (mycloud, None) 0 m1.tiny 2011-10-10T12:17:27Z unknown zone

检查一下实例是否成功启动和运行:

$ virsh list
Id Name                 State
----------------------------------
  1 instance-00000002    running

查看实例的详细信息可以用euca-describe-intances 命令

访问实例

.授权ping和ssh命令给VMS
euca-authorize -P icmp -t -1:-1 default
euca-authorize -P tcp -p 22 default
---(不能ping或ssh时候,使用以下命令)----
killall dnsmasq 
service nova-network restart

ssh -i mykey.priv ubuntu@172.16.200.182

最后可以终止实例的运行
euca-terminate-instances i-00000002










分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics