OpenStack Grizzly版本部署(离线)
参考原版地址:https://github.com/mseknibilel/OpenStack-Grizzly-Install-Guide
图转自原版地址
部署拓扑:
部署环境:vmware station架设三台虚拟机 (ubuntu12.04操作系统)
我的配置:eth0 vmnet8 NAT 192.168.40.0/24
eth1 vmnet3 host-only 192.168.10.0/24
eth2 vmnet4 host-only 192.168.157.0/24
一、首先配置离线源:
(1)添加网络源、更新源、更新所有安装包
apt-get install -y ubuntu-cloud-keyring echo deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/grizzly main >> /etc/apt/sources.list.d/grizzly.list apt-get update -y apt-get upgrade -y apt-get dist-upgrade -y
(2)安装需要的服务和组件
mysql-server python-mysqld rabbitmq-server ntp vlan bridge-utils keystone glance quantum-server nova-api nova-cert novnc nova-consoleauth nova-scheduler nova-novncproxy nova-doc nova-conductor cinder-api cinder-scheduler cinder-volume iscsitarget open-iscsi iscsitarget-dkms openstack-dashboard memcached openvswitch-switch openvswitch-datapath-dkms quantum-plugin-openvswitch-agent quantum-dhcp-agent quantum-l3-agent quantum-metadata-agent cpu-checker kvm libvirt-bin pm-utils nova-compute-kvm
(3)制作源 ---方法http://blog.sina.com.cn/s/blog_6ab596b90100u4xh.html
二、控制节点的安装
(1)在network/interface中配置静态IP
# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 192.168.40.128 netmask 255.255.255.0 gateway 192.168.40.2
#控制节点暂不设eth1
并重启 service networking restart
(2)安装mysql数据库和消息队列rabbitmq
apt-get install -y mysql-server python-mysqldb sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf service mysql restart apt-get install -y rabbitmq-server
(3)安装ntp时间服务器 这个非常重要 用于组件之间的实时同步
apt-get install -y ntp
(4)更改数据库密码
修改MySQL密码为passwd: [root@stonex ~]# mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. ...... 省略了一些行 mysql> select user,host,password from mysql.user; 查询用户的密码,都为空,用下面的命令设置root的密码为password mysql> set password for root@localhost=password('password'); mysql> exit
(5)在mysql中添加各个组件的数据库并授权
mysql -u root -p #Keystone CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON keystone.* TO 'keystoneUser'@'%' IDENTIFIED BY 'keystonePass'; #Glance CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO 'glanceUser'@'%' IDENTIFIED BY 'glancePass'; #Quantum CREATE DATABASE quantum; GRANT ALL PRIVILEGES ON quantum.* TO 'quantumUser'@'%' IDENTIFIED BY 'quantumPass'; #Nova CREATE DATABASE nova; GRANT ALL PRIVILEGES ON nova.* TO 'novaUser'@'%' IDENTIFIED BY 'novaPass'; #Cinder CREATE DATABASE cinder; GRANT ALL PRIVILEGES ON cinder.* TO 'cinderUser'@'%' IDENTIFIED BY 'cinderPass'; quit;
(6)安装vlan和管理网桥的工具
apt-get install -y vlan bridge-utils
sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf # To save you from rebooting, perform the following 开启路由转发功能 sysctl net.ipv4.ip_forward=1
(7)安装keystone (前六步可以说是准备工作)
apt-get install -y keystone
将keystone.conf中
connection = mysql://keystoneUser:keystonePass@192.168.40.128/keystone
重启并同步数据库
service keystone restart
keystone-manage db_sync
下面要开始创建keystone的user、tenant、service和role,这里直接借用源地址作者提供的两个脚本。
#Modify the **HOST_IP** and **EXT_HOST_IP** variables before executing the scripts wget https://raw.github.com/mseknibilel/OpenStack-Grizzly-Install-Guide/OVS_MultiNode/KeystoneScripts/keystone_basic.sh wget https://raw.github.com/mseknibilel/OpenStack-Grizzly-Install-Guide/OVS_MultiNode/KeystoneScripts/keystone_endpoints_basic.sh
如果是离线安装,脚本事先要下好
chmod +x keystone_basic.sh chmod +x keystone_endpoints_basic.sh ./keystone_basic.sh ./keystone_endpoints_basic.sh
创建一个credential 执行一些环境变量,这样才能使用openstack的命令
nano creds #Paste the following:
#此处name和pass都要与上面两个脚本中的一一对应 export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=admin_pass export OS_AUTH_URL="http://192.168.40.128:5000/v2.0/" # Load it: 使用方法 source这个credential即可 source creds
测试keystone
keystone user-list keystone service-list等
(8)安装glance
apt-get install -y glance
修改配置文件
修改 /etc/glance/glance-api-paste.ini with: [filter:authtoken] paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory delay_auth_decision = true auth_host = 192.168.40.128 auth_port = 35357 auth_protocol = http admin_tenant_name = service admin_user = glance admin_password = service_pass 修改the /etc/glance/glance-registry-paste.ini with: [filter:authtoken] paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory auth_host = 192.168.40.128 auth_port = 35357 auth_protocol = http admin_tenant_name = service admin_user = glance admin_password = service_pass 修改/etc/glance/glance-api.conf with: sql_connection = mysql://glanceUser:glancePass@192.168.40.128/glance And: [paste_deploy] flavor = keystone Update the /etc/glance/glance-registry.conf with: sql_connection = mysql://glanceUser:glancePass@192.168.40.128/glance And: [paste_deploy] flavor = keystone
重启并同步数据库
service glance-* restart
glance-manage db_sync
测试
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 此处的image是一个在线的镜像 镜像也可以自己做 教程以后再写 glance image-list
(9)安装quantum
apt-get install -y quantum-server
修改配置文件
编辑/etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini with: #Under the database section [DATABASE] sql_connection = mysql://quantumUser:quantumPass@192.168.40.128/quantum #Under the OVS section [OVS] tenant_network_type = gre tunnel_id_ranges = 1:1000 enable_tunneling = True #Firewall driver for realizing quantum security group function [SECURITYGROUP] firewall_driver = quantum.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver 编辑/etc/quantum/api-paste.ini [filter:authtoken] paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory auth_host = 192.168.40.128 auth_port = 35357 auth_protocol = http admin_tenant_name = service admin_user = quantum admin_password = service_pass 编辑the /etc/quantum/quantum.conf: [keystone_authtoken] auth_host = 192.168.40.128 auth_port = 35357 auth_protocol = http admin_tenant_name = service admin_user = quantum admin_password = service_pass signing_dir = /var/lib/quantum/keystone-signing
重启quantum
service quantum-server restart
(10)安装nova
apt-get install -y nova-api nova-cert novnc nova-consoleauth nova-scheduler nova-novncproxy nova-doc nova-conductor
修改配置
编辑 /etc/nova/api-paste.ini file to this: [filter:authtoken] paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory auth_host = 192.168.40.128 auth_port = 35357 auth_protocol = http admin_tenant_name = service admin_user = nova admin_password = service_pass signing_dirname = /tmp/keystone-signing-nova # Workaround for https://bugs.launchpad.net/nova/+bug/1154809 auth_version = v2.0 编辑 /etc/nova/nova.conf like this: [DEFAULT] logdir=/var/log/nova state_path=/var/lib/nova lock_path=/run/lock/nova verbose=True api_paste_config=/etc/nova/api-paste.ini compute_scheduler_driver=nova.scheduler.simple.SimpleScheduler rabbit_host=192.168.40.128 nova_url=http://192.168.40.128:8774/v1.1/ sql_connection=mysql://novaUser:novaPass@192.168.40.128/nova root_helper=sudo nova-rootwrap /etc/nova/rootwrap.conf # Auth use_deprecated_auth=false auth_strategy=keystone # Imaging service glance_api_servers=192.168.40.128:9292 image_service=nova.image.glance.GlanceImageService # Vnc configuration novnc_enabled=true novncproxy_base_url=http://192.168.40.128:6080/vnc_auto.html novncproxy_port=6080 vncserver_proxyclient_address=192.168.40.128 vncserver_listen=0.0.0.0 # Network settings network_api_class=nova.network.quantumv2.api.API quantum_url=http://192.168.40.128:9696 quantum_auth_strategy=keystone quantum_admin_tenant_name=service quantum_admin_username=quantum quantum_admin_password=service_pass quantum_admin_auth_url=http://192.168.40.128:35357/v2.0 libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDriver #If you want Quantum + Nova Security groups firewall_driver=nova.virt.firewall.NoopFirewallDriver security_group_api=quantum #If you want Nova Security groups only, comment the two lines above and uncomment line -1-. #-1-firewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDriver #Metadata service_quantum_metadata_proxy = True quantum_metadata_proxy_shared_secret = helloOpenStack # Compute # compute_driver=libvirt.LibvirtDriver # Cinder # volume_api_class=nova.volume.cinder.API osapi_volume_listen_port=5900
重启并同步
cd /etc/init.d/; for i in $( ls nova-* ); do sudo service $i restart; done
nova-manage db sync
(11)安装cinder
apt-get install -y cinder-api cinder-scheduler cinder-volume iscsitarget open-iscsi iscsitarget-dkms
修改配置
配置 iscsi services: sed -i 's/false/true/g' /etc/default/iscsitarget Restart the services: service iscsitarget start service open-iscsi start 编辑/etc/cinder/api-paste.ini like the following: [filter:authtoken] paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory service_protocol = http service_host = 192.168.40.128 service_port = 5000 auth_host = 192.168.40.128 auth_port = 35357 auth_protocol = http admin_tenant_name = service admin_user = cinder admin_password = service_pass signing_dir = /var/lib/cinder 编辑the /etc/cinder/cinder.conf to: [DEFAULT] rootwrap_config=/etc/cinder/rootwrap.conf sql_connection = mysql://cinderUser:cinderPass@192.168.40.128/cinder api_paste_config = /etc/cinder/api-paste.ini iscsi_helper=ietadm volume_name_template = volume-%s volume_group = cinder-volumes verbose = True auth_strategy = keystone iscsi_ip_address=192.168.40.128
同步
cinder-manage db sync
最后 创建volume-group
dd if=/dev/zero of=cinder-volumes bs=1 count=0 seek=2G losetup /dev/loop2 cinder-volumes fdisk /dev/loop2 #Type in the followings: n p 1 ENTER ENTER t 8e w Proceed to create the physical volume then the volume group: pvcreate /dev/loop2 vgcreate cinder-volumes /dev/loop2
这种方法在重启后会失效 解决方法
https://github.com/mseknibilel/OpenStack-Folsom-Install-guide/blob/master/Tricks%26Ideas/load_volume_group_after_system_reboot.rst
重启
cd /etc/init.d/; for i in $( ls cinder-* ); do sudo service $i restart; done
(12)安装horizon
apt-get install -y openstack-dashboard memcached
如何卸载openstack-ubuntu的主题
dpkg --purge openstack-dashboard-ubuntu-theme
重启
service apache2 restart; service memcached restart
通过
Check OpenStack Dashboard at http://192.168.40.128/horizon. We can login with the admin / admin_pass访问