分享

OpenStack如何安装配置篇

howtodown 发表于 2013-12-19 15:52:56 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 7370
OpenStack是一套用来管理虚拟机的平台软件。它不是一个单一的软件,而是集成了很多个组件用来协同合作。简单的来说,譬如有十台服务器,在VMware的情况下,我们在每台服务器上安装esx或者esxi,然后装一台vcenter,在vcenter的管理界面里把十台服务器的esx通过域名或者ip加入,就能在vcenter里面统一管理。类似的,红帽也有virsh这种管理虚拟机的程序。
所有组件安装在一台controller上。
关键字定义
控制端:类似vcenter的管理系统。
节点:类似安装了esx的服务器。
nova组件:安装在节点上,让节点能按照控制端的命令来操作节点上的虚拟机或者存储。
glance组件:用来管理镜像。
环境准备
ubuntu 11.10,服务器双网卡
步骤
安装完基本的操作系统后
  1. <P> </P><PRE>$ sudo apt-get update
  2. $ sudo apt-get upgrade
  3. $ sudo apt-get install bridge-utils  #安装网桥软件 </PRE>
复制代码
配置网络接口
在这里我的架构是eth0连接了外网,即我們可以访问的网口。eth1做了网桥,和节点之间通过一个交换机连接。这样的好处是,内部节点和控制器的流量都走br100的交换机,而不会影响虚拟机上的应用使用的网络。
  1. $ sudo apt-get install -y rabbitmq-server #安装MQ消息組件
  2. $ sudo apt-get install -y python-greenlet python-mysqldb #安装Python dependencies
复制代码
接下来安装各个nova组件及依赖
  1. $ sudo apt-get install nova-volume nova-vncproxy nova-api nova-ajax-console-proxy
  2. $ sudo apt-get install nova-doc nova-scheduler nova-objectstore
  3. $ sudo apt-get install nova-network nova-compute
  4. $ sudo apt-get install glance
复制代码
安装euca2ools和unzip
  1. $ sudo apt-get install -y euca2ools unzip
复制代码
接下来我们安装数据库,这裡我选择了MySQL,其实个人觉得PostgreSQL更好。
  1. sudo su -
  2. # MYSQL_PASS=nova 设定mysql的密码和nova数据库的密码
  3. # cat <<MYSQL_PRESEED | debconf-set-selections
  4. >mysql-server-5.1 mysql-server/root_password password $MYSQL_PASS
  5. >mysql-server-5.1 mysql-server/root_password_again password $MYSQL_PASS
  6. >mysql-server-5.1 mysql-server/start_on_boot boolean true
  7. >MYSQL_PRESEED
  8. # apt-get install -y mysql-server
  9. # exit 退出root环境
  10. $ sudo sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf 修改my.cnf配置文件
  11. $ sudo service mysql restart
  12. $ MYSQL_PASS=nova 在普通用户环境下把密码再次设置一下变量
  13. $ NOVA_PASS=notnova 这是nova数据库的密码
  14. $ sudo mysql -uroot -p$MYSQL_PASS -e 'CREATE DATABASE nova;' 创建一个名字为nova的数据库,这裡建议新手使用nova的名字,如果这裡换别的名字,那麽在nova的配置文件裡面也需要更改
  15. $ sudo mysql -uroot -p$MYSQL_PASS -e "GRANT ALL PRIVILEGES ON *.* TO 'nova'@'%' WITH GRANT OPTION;"
  16. $ sudo mysql -uroot -p$MYSQL_PASS -e "SET PASSWORD FOR 'nova'@'%' = PASSWORD('$NOVA_PASS');"
复制代码
至此,nova,glance的安装部分完成,接下来是配置。
  1. $ sudo vi /etc/nova/nova.conf
  2. --dhcpbridge_flagfile=/etc/nova/nova.conf
  3. --dhcpbridge=/usr/bin/nova-dhcpbridge
  4. --logdir=/var/log/nova
  5. --state_path=/data/openstack/nova 这裡的/data/openstack/nova是我新建的一个卷和目录,确保你有这个,并且要属于nova用户,或者你也可以使用他的默认设置
  6. --instances_path=/data/openstack/nova/instances 修改了默认存放instances的地方
  7. --lock_path=/var/lock/nova
  8. --force_dhcp_release=True
  9. --use_deprecated_auth
  10. --iscsi_helper=tgtadm
  11. --verbose
  12. --scheduler_driver=nova.scheduler.simple.SimpleScheduler
  13. --network_manager=nova.network.manager.FlatDHCPManager
  14. --my_ip=10.200.200.2 这是我的内网ip地址
  15. --public_inter>
  16. --sql_connection=mysql://nova:notnova@localhost/nova 刚才建立的数据库
  17. --libvirt_type=kvm
  18. --api_paste_config=/etc/nova/api-paste.ini
  19. --image_service=nova.image.glance.GlanceImageService
  20. --ec2_dmz_host=192.168.200.21
  21. --ec2_url=http://192.168.200.21:8773/services/Cloud
  22. --rabbit_host=localhost
  23. --glance_api_servers=10.200.200.2:9292
  24. --flat_network_bridge=br100
  25. --flat_inter>
  26. --flat_network_dhcp_start=10.200.200.51 指定从instances分配从51开始,但貌似这个选项不起作用
  27. --fixed_range=10.200.200.0/24 这个选项指定instances的网段
  28. --flat_injected=False
  29. --multi_host=1 使用multi_host,即以后可以在节点上也使用nova-network
  30. --libvirt_use_virtio_for_bridges 使用virtio做instances的网卡模式
复制代码
然后是glance的:
  1. $ sudo vi /etc/glance/glance-api.conf
复制代码
修改filesystem_store_datadir参数,来指定你需要存放images的目录,当然属主也要改成glance用户。
  1. $ sudo vi /etc/glance/glance-registry.conf
复制代码
这个文件可以选修改sql_connection参数来指定你的数据库。
如果你要修改,使用mysql里面的数据库,请确保在mysql裡面建立了一个相对应的数据库
  1. sql_connection = mysql://nova:notnova@localhost/glance
复制代码
这是我的配置,我在mysql建立了一个glance的数据库
  1. $ sudo chown -R root:nova /etc/nova
复制代码
改变一下/etc/nova的属主
  1. </BLOCKQUOTE></DIV>
  2. <P>重启各个服务</P>
  3. <DIV class=blockcode>
  4. <BLOCKQUOTE>$ sudo restart libvirt-bin
  5. $ sudo restart nova-network
  6. $ sudo restart nova-compute
  7. $ sudo restart nova-api
  8. $ sudo restart nova-objectstore
  9. $ sudo restart nova-scheduler
  10. $ sudo restart glance-registry
  11. $ sudo restart glance-api
复制代码
注意:我们这裡没有起nova-volume,是因为虽然我们安装了volume,但是volume需要单独的一个vg来使用,我们现在还没配置volume,所以起不来。
这裡可能network服务和compute没法起来,先暂时不要去管。
接下去,我们做配置nova的运行环境了
  1. $ sudo nova-manage db sync
  2. nova-manage user admin <user_name>
复制代码
在这裡我们可以创建一个用户,如
  1. $ sudo nova-manage user admin test
复制代码
创建成功屏幕上会返回下面这样的输出:
  1. export EC2_ACCESS_KEY=d6aa7747-4324-4abc-9604-4f7d6a2f8f3f
  2. export EC2_SECRET_KEY=2b204b75-da2d-47b8-ba7a-611d71f0ecbf
复制代码
  1. nova-manage project create <project_name> <user_name>
复制代码
创建一个项目,属于刚才我们建的那个用户 如:
  1. $ sudo nova-manage project create test-proj test
复制代码
  1. $ sudo nova-manage project create test-proj testnova-manage network create --help
复制代码
创建一个实例的网络,如:
  1. $ sudo nova-manage network create --label=test-net --fixed_range_v4=10.200.200.0/24 --num_network=1 --network_size=256
复制代码
再次启动刚才失败的服务
  1. <PRE>$ sudo start nova-network
  2. $ sudo start nova-compute
  3. $ sudo start nova-scheduler</PRE>
复制代码
怎么样,成功了吧。
另外,在起每个服务的时候,最好看一下日志,譬如sudo tail -f /var/log/nova/nova-network来确定有没有报错,也可以用ps aux | grep [n]ova-network来确认服务有没有开启。如果起服务失败,你确认好原因,修改好以后,需要用sudo start而不是sudo restart来起
好了。这样计算的环境就部署好了。我们可以用命令来看一下状态:
  1. $ sudo nova-manage service list
  2. $ sudo nova-manage network list
复制代码
如此这般。
接下来创建证书,以方便我们使用euca工具
  1. $ cd
  2. $ mkdir creds
  3. $ sudo nova-manage project zipfile test-proj test creds/novacreds.zip
  4. $ unzip creds/novacreds.zip -d creds/
  5. $ source creds/novarc
复制代码
注意每次你重新登录shell的时候,需要source一下这个认证文件才能使用euca;当然你也可以把novarc的内容>>到你的用户profile文件或者bashrc
OK,完成,我们可以用工具来看一下
  1. $ euca-describe-availability-zones verbose
  2. VAILABILITYZONE nova available
  3. AVAILABILITYZONE |- nova-test
  4. AVAILABILITYZONE | |- nova-network enabled :-) 2011-10-17 04:45:44
  5. AVAILABILITYZONE | |- nova-compute enabled :-) 2011-10-17 04:45:45
  6. AVAILABILITYZONE | |- nova-scheduler enabled :-) 2011-10-17 04:45:45
复制代码
至此,成功启用了服务。当你发现服务不能正常使用时,用ps aux | grep nova检查一下服务有没有开启,并需要详细观察/var/log/nova/目录下的各个服务的日志文件,这样才能获得更进一步的信息。
接下来我们可以用kvm来创建一个image镜像
  1. $ sudo apt-get install kvm-pxe
复制代码
安装一下这个,否则运行kvm的时候会有个警告
  1. $ sudo kvm -m 1024 -cdrom rhel5.iso -drive file=server.img,if=virtio,index=0 -boot d -net nic -net user -nographic -vnc :0
复制代码
这里我们使用RHEL 5的iso,运行完这个命令,可以用vnc连接。
在你的本机连接服务器:ssvncviewer 192.168.200.21 :0
打开vnc你就可以看到安装界面。
安装完以后,把下面一段写入rhel镜像的/etc/rc.local的开头:
  1. depmod -a
  2. modprobe acpiphp
  3. # simple attempt to get the user ssh key using the meta-data service
  4. mkdir -p /root/.ssh
  5. echo >> /root/.ssh/authorized_keys
  6. curl -m 10 -s http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key | grep 'ssh-rsa' >> /root/.ssh/authorized_keys
  7. echo "AUTHORIZED_KEYS:"
  8. echo "************************"
  9. cat /root/.ssh/authorized_keys
复制代码
保存退出,这样image就做好了。
使用glance上传镜像
  1. $ glance --verbose add name="rhel5" disk_format=raw is_public=true < server.img
复制代码
同时你应该观察/var/log/glance/registry和api的log。成功之后,用
  1. $ glance index
复制代码
看看镜像列表。
启动你的实例
  1. $ euca-describe-images
复制代码
查看你现在可用的image,输出类似下面这样:
  1. IMAGE ami-00000003 server.img
复制代码
记住这里ami-000000003这个image号。
  1. $ euca-run-instances -t m1.tiny ami-00000003
复制代码
启动ami-00000003镜像的实例。-t指明了实例的类型,类型规定了cpu,内存,磁盘大小等信息。
观察/var/log/nova/nova-api.log nova-scheduler.log,nova-compute,nova-network.log的输出信息,同时你也可以使用vnc连接serverip:0来看实例的console。
用命令$ euca-describe-instances来查看你目前的实例情况。第一次启动实例会比较慢,因为需要把image从glance拷贝到nova下的实例目录。
由于nova目前发展的很快,diablo的release版本功能可以完成日常的一些需求。但是开发版本的nova可以更好的结合keystone,novaclient,dashboard等一些其他的项目,使得OpenStack更加健全。有兴趣的朋友,可以在生产环境使用repo的安装方式,在测试环境测试开发版本。我本人由于在生产环境中使用了git方式安装的开发版本,因此后续更加完善的整合,我都将以开发版本的形式出现。当然使用开发版本的话,会有更多的烦恼,但也同样有更多的乐趣和动手的实践,能更进一步了解其工作的原理机制。











没找到任何评论,期待你打破沉寂

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

本版积分规则

关闭

推荐上一条 /2 下一条