分享

openstack零基础入门:OpenStack Grizzly详细安装指导(1)

sstutu 发表于 2014-4-1 20:23:38 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 33 131789
本帖最后由 howtodown 于 2014-8-19 12:05 编辑


openstack并不是复杂,可是在我们学习的过程中为什么感觉不知所以然,其中的原因便是我们缺乏Linux知识。
看这篇文章首先大家需要了解:

集群搭建必备,云技术基础:Linux及虚拟化知识学习指导(hadoop、openstack)

安装openstack过程中:Linux for循环的作用是什么?

安装openstack过程中:sed命令的作用是什么

安装openstack过程中:如何添加源,echo,<<分别代表什么意思?

安装openstack过程中:RabbitMQ与NTP是什么

学习openstack之linux mysql 操作命令汇总

新手安装openstack之命令apt-get install -y vlan bridge-utils的作用是什么





一、环境介绍:

控制节点 eth0 (10.10.10.51), eth1 (192.168.100.51)
网络节点 eth0 (10.10.10.52), eth1 (10.20.20.52), eth2 (192.168.100.52)
计算节点 eth0 (10.10.10.53), eth1 (10.20.20.53)



说明1: 使用 dpkg -s <packagename> to 确保 grizzly packages (version : 2013.1)

说明2: 你可以添加比较多的计算节点,下面是网络结构

687474703a2f2f692e696d6775722e636f6d2f467273756768652e6a7067.jpg



二、控制节点

2.1. Ubuntu准备

安装64位 Ubuntu 12.04 或则13.04 Server ,切换sudo模式

  1. sudo su
复制代码

添加 Grizzly 源 [Only for Ubuntu 12.04]:
  1. apt-get install -y ubuntu-cloud-keyring
  2. echo deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/grizzly main >> /etc/apt/sources.list.d/grizzly.list
复制代码
对于上面命令不了解,可参考
安装openstack过程中:如何添加源,echo,<<分别代表什么意思?

更新系统:
  1. apt-get update -y
  2. apt-get upgrade -y
  3. apt-get dist-upgrade -y
复制代码


2.2. 网络配置
只有一个网卡接入互联网
  1. #For Exposing OpenStack API over the internet
  2. auto eth1
  3. iface eth1 inet static
  4. address 192.168.100.51
  5. netmask 255.255.255.0
  6. gateway 192.168.100.1
  7. dns-nameservers 8.8.8.8
  8. #Not internet connected(used for OpenStack management)
  9. auto eth0
  10. iface eth0 inet static
  11. address 10.10.10.51
  12. netmask 255.255.255.0
复制代码

重新启动网络
  1. service networking restart
复制代码

2.3. MySQL & RabbitMQ安装


安装 MySQL:
  1. apt-get install -y mysql-server python-mysqldb
复制代码
mysqlPSW.png


出现这个界面是输入MySQL的密码

配置mysql
  1. sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf
  2. service mysql restart
复制代码
对于上面命令不了解可以参考下面内容:

安装openstack过程中:sed命令的作用是什么

学习openstack之linux mysql 操作命令汇总

2.4. RabbitMQ

安装 RabbitMQ:
  1. apt-get install -y rabbitmq-server
复制代码

安装 NTP service:
  1. apt-get install -y ntp
复制代码

创建数据库:
  1. mysql -u root -p
  2. #Keystone
  3. CREATE DATABASE keystone;
  4. GRANT ALL ON keystone.* TO 'keystoneUser'@'%' IDENTIFIED BY 'keystonePass';
  5. #Glance
  6. CREATE DATABASE glance;
  7. GRANT ALL ON glance.* TO 'glanceUser'@'%' IDENTIFIED BY 'glancePass';
  8. #Quantum
  9. CREATE DATABASE quantum;
  10. GRANT ALL ON quantum.* TO 'quantumUser'@'%' IDENTIFIED BY 'quantumPass';
  11. #Nova
  12. CREATE DATABASE nova;
  13. GRANT ALL ON nova.* TO 'novaUser'@'%' IDENTIFIED BY 'novaPass';
  14. #Cinder
  15. CREATE DATABASE cinder;
  16. GRANT ALL ON cinder.* TO 'cinderUser'@'%' IDENTIFIED BY 'cinderPass';
  17. quit;
复制代码
对于上面命令不了解可以参考下面内容:

安装openstack过程中:RabbitMQ与NTP是什么


学习openstack之linux mysql 操作命令汇总


2.5. 其他


安装其它服务:
  1. apt-get install -y vlan bridge-utils
复制代码

启动 IP_Forwarding:
  1. sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
  2. # To save you from rebooting, perform the following
  3. sysctl net.ipv4.ip_forward=1
复制代码

2.6. Keystone

安装Keystone
  1. apt-get install -y keystone
复制代码

在文件 /etc/keystone/keystone.conf  中添加如下语句
  1. connection = mysql://keystoneUser:keystonePass@10.10.10.51/keystone
复制代码
上面的配置可能大家的理解不一样这里给出图示:
ketystonesql.png


上面connection注释掉,替换为上面链接如下图所示
beitihuan.png




重新启动Keystone,同步数据库
  1. service keystone restart
  2. keystone-manage db_sync
复制代码

下载keystone_basic.sh,keystone_endpoints_basic.sh并执行脚本
  1. #Modify the **HOST_IP** and **EXT_HOST_IP** variables before executing the scripts
  2. wget https://raw.github.com/mseknibilel/OpenStack-Grizzly-Install-Guide/OVS_MultiNode/KeystoneScripts/keystone_basic.sh
  3. wget https://raw.github.com/mseknibilel/OpenStack-Grizzly-Install-Guide/OVS_MultiNode/KeystoneScripts/keystone_endpoints_basic.sh
  4. chmod +x keystone_basic.sh
  5. chmod +x keystone_endpoints_basic.sh
  6. ./keystone_basic.sh
  7. ./keystone_endpoints_basic.sh
复制代码



注释与说明:
查看脚本keystone_basic.sh内容:
script.png


上面ip为控制节点的ip

查看脚本keystone_endpoints_basic.sh内容:
end.png


上面HOST_IP分别为控制节点的eth0,eth1两个网卡ip。
当脚本./keystone_basic.sh执行时,没有任何输出说明脚本执行成功。
执行./keystone_endpoints_basic.sh脚本时,会看到如下输出:

output.png


创建证书,后面不会遇到麻烦:(其实这里是环境变量的配置,我们在后面的操作中,就不需要每次都输入用户名密码等)
  1. nano creds
  2. #Paste the following:
  3. export OS_TENANT_NAME=admin
  4. export OS_USERNAME=admin
  5. export OS_PASSWORD=admin_pass
  6. export OS_AUTH_URL="http://192.168.100.51:5000/v2.0/"
  7. # Load it:
  8. source creds
复制代码

使用CLI命令,测试使用安装成功
  1. keystone user-list
复制代码

2.7. Glance

安装Glance
  1. apt-get install -y glance
复制代码
更新/etc/glance/glance-api-paste.ini 文件
  1. [filter:authtoken]
  2. paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
  3. delay_auth_decision = true
  4. auth_host = 10.10.10.51
  5. auth_port = 35357
  6. auth_protocol = http
  7. admin_tenant_name = service
  8. admin_user = glance
  9. admin_password = service_pass
复制代码


注释与说明:


即使找到上面[filter:authtoken],然后把相关内容进行粘帖。
glance.png

替换为如下:
glancepaste.png


更新 /etc/glance/glance-registry-paste.ini文件
  1. [filter:authtoken]
  2. paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
  3. auth_host = 10.10.10.51
  4. auth_port = 35357
  5. auth_protocol = http
  6. admin_tenant_name = service
  7. admin_user = glance
  8. admin_password = service_pass
复制代码
  1. [paste_deploy]
  2. flavor = keystone
复制代码



操作同上,也是内容的替换。

替换/etc/glance/glance-api.conf文件
  1. sql_connection = mysql://glanceUser:glancePass@10.10.10.51/glance
复制代码

注释与说明:
glancesql.png
同样是将原先sql_connection注释掉,替换为sql_connection = mysql://glanceUser:glancePass@10.10.10.51/glance

更新 /etc/glance/glance-registry.conf:
  1. sql_connection = mysql://glanceUser:glancePass@10.10.10.51/glance
复制代码
  1. [paste_deploy]
  2. flavor = keystone
复制代码

到这里我们是否找到一个规律就是无论是替换还是新增加内容,我们只要找到相关标签即可。如果有内容即替换,无内容则添加。

重启glance-api 与 glance-registry services:
  1. service glance-api restart; service glance-registry restart
复制代码

同步 glance 数据库:
  1. glance-manage db_sync
复制代码

导入img
  1. glance image-create --name myFirstImage --is-public true --container-format bare --disk-format qcow2 --location http://download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-disk.img
复制代码

测试安装是否成功
  1. glance image-list
复制代码
我们看到下图,说明安装成功
glancelist.png


2.8. Quantum 安装Quantum
  1. apt-get install -y quantum-server
复制代码

更新 the OVS plugin configuration 文件 /etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini:
  1. #Under the database section
  2. [DATABASE]
  3. sql_connection = mysql://quantumUser:quantumPass@10.10.10.51/quantum
  4. #Under the OVS section
  5. [OVS]
  6. tenant_network_type = gre
  7. tunnel_id_ranges = 1:1000
  8. enable_tunneling = True
  9. #Firewall driver for realizing quantum security group function
  10. [SECURITYGROUP]
  11. firewall_driver = quantum.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
复制代码

注释与说明:
database.png



我们看到上面链接替换为sql_connection = mysql://quantumUser:quantumPass@10.10.10.51/quantum即可。下面操作同理





编辑 /etc/quantum/api-paste.ini
  1. [filter:authtoken]
  2. paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
  3. auth_host = 10.10.10.51
  4. auth_port = 35357
  5. auth_protocol = http
  6. admin_tenant_name = service
  7. admin_user = quantum
  8. admin_password = service_pass
复制代码

更新 /etc/quantum/quantum.conf:
  1. [keystone_authtoken]
  2. auth_host = 10.10.10.51
  3. auth_port = 35357
  4. auth_protocol = http
  5. admin_tenant_name = service
  6. admin_user = quantum
  7. admin_password = service_pass
  8. signing_dir = /var/lib/quantum/keystone-signing
复制代码

重启 quantum server:
  1. service quantum-server restart
复制代码



2.9. Nova

安装 nova 组件
  1. apt-get install -y nova-api nova-cert novnc nova-consoleauth nova-scheduler nova-novncproxy nova-doc nova-conductor
复制代码

修改/etc/nova/api-paste.ini 中authtoken 部分
  1. [filter:authtoken]
  2. paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
  3. auth_host = 10.10.10.51
  4. auth_port = 35357
  5. auth_protocol = http
  6. admin_tenant_name = service
  7. admin_user = nova
  8. admin_password = service_pass
  9. signing_dirname = /tmp/keystone-signing-nova
  10. # Workaround for https://bugs.launchpad.net/nova/+bug/1154809
  11. auth_version = v2.0
复制代码

修改 the /etc/nova/nova.conf:
  1. [DEFAULT]
  2. logdir=/var/log/nova
  3. state_path=/var/lib/nova
  4. lock_path=/run/lock/nova
  5. verbose=True
  6. api_paste_config=/etc/nova/api-paste.ini
  7. compute_scheduler_driver=nova.scheduler.simple.SimpleScheduler
  8. rabbit_host=10.10.10.51
  9. nova_url=http://10.10.10.51:8774/v1.1/
  10. sql_connection=mysql://novaUser:novaPass@10.10.10.51/nova
  11. root_helper=sudo nova-rootwrap /etc/nova/rootwrap.conf
  12. # Auth
  13. use_deprecated_auth=false
  14. auth_strategy=keystone
  15. # Imaging service
  16. glance_api_servers=10.10.10.51:9292
  17. image_service=nova.image.glance.GlanceImageService
  18. # Vnc configuration
  19. novnc_enabled=true
  20. novncproxy_base_url=http://192.168.100.51:6080/vnc_auto.html
  21. novncproxy_port=6080
  22. vncserver_proxyclient_address=10.10.10.51
  23. vncserver_listen=0.0.0.0
  24. # Network settings
  25. network_api_class=nova.network.quantumv2.api.API
  26. quantum_url=http://10.10.10.51:9696
  27. quantum_auth_strategy=keystone
  28. quantum_admin_tenant_name=service
  29. quantum_admin_username=quantum
  30. quantum_admin_password=service_pass
  31. quantum_admin_auth_url=http://10.10.10.51:35357/v2.0
  32. libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver
  33. linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDriver
  34. #If you want Quantum + Nova Security groups
  35. firewall_driver=nova.virt.firewall.NoopFirewallDriver
  36. security_group_api=quantum
  37. #If you want Nova Security groups only, comment the two lines above and uncomment line -1-.
  38. #-1-firewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDriver
  39. #Metadata
  40. service_quantum_metadata_proxy = True
  41. quantum_metadata_proxy_shared_secret = helloOpenStack
  42. # Compute #
  43. compute_driver=libvirt.LibvirtDriver
  44. # Cinder #
  45. volume_api_class=nova.volume.cinder.API
  46. osapi_volume_listen_port=5900
复制代码

同步数据库:
  1. nova-manage db sync
复制代码



重启与nova有关的所有服务:
  1. cd /etc/init.d/; for i in $( ls nova-* ); do sudo service $i restart; done
复制代码

对于上面命令不了解,可以查看:
安装openstack过程中:Linux for循环的作用是什么?

检查安装是否成功
  1. nova-manage service list
复制代码
当我们看到下图时候,说明安装成功
novalist.png


2.10. Cinder安装所需要的 packages:
  1. apt-get install -y cinder-api cinder-scheduler cinder-volume iscsitarget open-iscsi iscsitarget-dkms
复制代码
对于上面命令新手可能会不理解,含义是分别安装
cinder-api ,cinder-scheduler,cinder-volume等包。详细可查看
新手安装openstack之命令apt-get install -y vlan bridge-utils的作用是什么

配置iSCSI
  1. sed -i 's/false/true/g' /etc/default/iscsitarget
复制代码
上面命令的含义是在文件iscsitarget中新的一行插入s/false/true/g
详细可查看安装openstack过程中:sed命令的作用是什么



为保证生效,重启服务:
  1. service iscsitarget start
  2. service open-iscsi start
复制代码

配置 /etc/cinder/api-paste.ini
  1. [filter:authtoken]
  2. paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
  3. service_protocol = http
  4. service_host = 192.168.100.51
  5. service_port = 5000
  6. auth_host = 10.10.10.51
  7. auth_port = 35357
  8. auth_protocol = http
  9. admin_tenant_name = service
  10. admin_user = cinder
  11. admin_password = service_pass
  12. signing_dir = /var/lib/cinder
复制代码

编辑 /etc/cinder/cinder.conf 文件
  1. [DEFAULT]
  2. rootwrap_config=/etc/cinder/rootwrap.conf
  3. sql_connection = mysql://cinderUser:cinderPass@10.10.10.51/cinder
  4. api_paste_config = /etc/cinder/api-paste.ini
  5. iscsi_helper=ietadm
  6. volume_name_template = volume-%s
  7. volume_group = cinder-volumes
  8. verbose = True
  9. auth_strategy = keystone
  10. iscsi_ip_address=10.10.10.51
复制代码

同步数据库
  1. cinder-manage db sync
复制代码

创建一个卷组命名为cinder-volumes:
  1. dd if=/dev/zero of=cinder-volumes bs=1 count=0 seek=2G
  2. losetup /dev/loop2 cinder-volumes
  3. fdisk /dev/loop2
  4. #Type in the followings:
  5. n
  6. p
  7. 1
  8. ENTER
  9. ENTER
  10. t
  11. 8e
  12. w
复制代码

注释与说明:首先执行
第一步:
first.png

第二步:
second.png

第三部:执行fdisk /dev/loop2会有相应命令输入,
three.png

只要按照下面命令输入就可以。
  1. n
  2. p
  3. 1
  4. ENTER
  5. ENTER
  6. t
  7. 8e
  8. w
复制代码


创建物理卷和卷组:
  1. pvcreate /dev/loop2
  2. vgcreate cinder-volumes /dev/loop2
复制代码
创建成功如下图:

five.png

注意: 重启后卷组不会自动挂载 (点击`这个点此`_ 设置在重启后自动挂载)

重启cinder 服务:
  1. cd /etc/init.d/; for i in $( ls cinder-* ); do sudo service $i restart; done
复制代码
查看cinder服务状态
  1. cd /etc/init.d/; for i in $( ls cinder-* ); do sudo service $i status; done
复制代码
看到下图所示:
status.png


2.11. Horizon


安装Horizon
  1. apt-get install -y openstack-dashboard memcached
复制代码

可以删掉默认的ubuntu的them
  1. dpkg --purge openstack-dashboard-ubuntu-theme
复制代码

重启Apache和memcached服务:
  1. service apache2 restart; service memcached restart
复制代码

这时候可以打开 http://192.168.100.51/horizon.
登录用户名:admin
密码:admin_pass

下一篇:openstack零基础入门:OpenStack Grizzly安装指导(2)





本帖被以下淘专辑推荐:

欢迎加入about云群425860289432264021 ,云计算爱好者群,关注about云腾讯认证空间

已有(34)人评论

跳转到指定楼层
非零即一 发表于 2014-6-27 16:59:29
回复

使用道具 举报

ucloud 发表于 2014-7-3 00:35:50
回复

使用道具 举报

michaleSun 发表于 2014-10-6 19:44:50
向sstutu问好!
亲,有个问题一直没解决,抽空帮忙看下呗:
宿主机 window server 2008 ,其中装了 vmware workstation10 ,然后我在这个vmware中虚拟出三个节点controller 、 compute1和networking。三个节点中的系统 为ubuntu 13.10server 64位 (虚拟机克隆的)。按照你如上所示的方法在controller中安装openstack的组件,一路下来,在安装到horizon的时候,horizon服务启动后,总是无法通过web登录。登录界面能出来,但是输入用户名和密码通过验证后,提示内部服务器错误。检查了很多次,也参考了很多网上的资料,keystone服务也正常,但就是无法登录。
没办法,我只能换成ubuntu12.04server的,是否能顺利通过,正在验证。。。
回复

使用道具 举报

sstutu 发表于 2014-10-6 19:53:20
michaleSun 发表于 2014-10-6 19:44
向sstutu问好!
亲,有个问题一直没解决,抽空帮忙看下呗:
宿主机 window server 2008 ,其中装了 vmwar ...

这个跟版本有些关系,此篇文档是在ubuntu12.04的基础上。
回复

使用道具 举报

michaleSun 发表于 2014-10-6 22:33:39
呵呵,换个ubuntu12.04 server 系统 立刻奏效!
回复

使用道具 举报

michaleSun 发表于 2014-10-11 13:37:32
亲,环境搭建好了,服务运行也正常,但启动一个虚拟实例报错,这是nova-scheduler.log报错信息:(其他文件没有错误)
ERROR nova.scheduler.filter_scheduler [req-bcbc9d95-382f-4705-b179-dd08fea9174e 6f9f1a7745f342b1b46c10af8b61afb5 6ec86999618c4c3380b9fa89dec4d438] [instance: 31106581-492e-40af-929b-b1c5d4319d24] Error from last host: compute1 (node compute1): [u'Traceback (most recent call last):\n', u'  File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 847, in _run_instance\n    requested_networks, macs, security_groups)\n', u'  File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 1091, in _allocate_network\n    instance=instance)\n', u'  File "/usr/lib/python2.7/contextlib.py", line 24, in __exit__\n    self.gen.next()\n', u'  File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 1087, in _allocate_network\n    security_groups=security_groups)\n', u'  File "/usr/lib/python2.7/dist-packages/nova/network/api.py", line 47, in wrapper\n    res = f(self, context, *args, **kwargs)\n', u'  File "/usr/lib/python2.7/dist-packages/nova/network/quantumv2/api.py", line 241, in allocate_for_instance\n    raise exception.SecurityGroupCannotBeApplied()\n', u'SecurityGroupCannotBeApplied: Network requires port_security_enabled and subnet associated in order to apply security groups.\n']

点评

安全组方面的问题  发表于 2015-3-26 21:59
回复

使用道具 举报

michaleSun 发表于 2014-10-11 13:38:16
不知道有没有解?
回复

使用道具 举报

doscho 发表于 2015-1-16 15:51:56
本人太挫了,没能看懂。
回复

使用道具 举报

only 发表于 2015-3-26 21:36:06
非常好,十分详细。
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条