本帖最后由 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: 你可以添加比较多的计算节点,下面是网络结构
二、控制节点
2.1. Ubuntu准备
安装64位 Ubuntu 12.04 或则13.04 Server ,切换sudo模式
复制代码
添加 Grizzly 源 [Only for Ubuntu 12.04]:
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 复制代码
对于上面命令不了解,可参考
安装openstack过程中:如何添加源,echo,<<分别代表什么意思?
更新系统:
apt-get update -y
apt-get upgrade -y
apt-get dist-upgrade -y 复制代码
2.2. 网络配置
只有一个网卡接入互联网 #For Exposing OpenStack API over the internet
auto eth1
iface eth1 inet static
address 192.168.100.51
netmask 255.255.255.0
gateway 192.168.100.1
dns-nameservers 8.8.8.8
#Not internet connected(used for OpenStack management)
auto eth0
iface eth0 inet static
address 10.10.10.51
netmask 255.255.255.0 复制代码
重新启动网络
service networking restart 复制代码
2.3. MySQL & RabbitMQ安装
安装 MySQL:
apt-get install -y mysql-server python-mysqldb
复制代码
出现这个界面是输入MySQL的密码
配置mysql
sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf
service mysql restart 复制代码
对于上面命令不了解可以参考下面内容:
安装openstack过程中:sed命令的作用是什么
学习openstack之linux mysql 操作命令汇总
2.4. RabbitMQ
安装 RabbitMQ:
apt-get install -y rabbitmq-server
复制代码
安装 NTP service:
复制代码
创建数据库:
mysql -u root -p
#Keystone
CREATE DATABASE keystone;
GRANT ALL ON keystone.* TO 'keystoneUser'@'%' IDENTIFIED BY 'keystonePass';
#Glance
CREATE DATABASE glance;
GRANT ALL ON glance.* TO 'glanceUser'@'%' IDENTIFIED BY 'glancePass';
#Quantum
CREATE DATABASE quantum;
GRANT ALL ON quantum.* TO 'quantumUser'@'%' IDENTIFIED BY 'quantumPass';
#Nova
CREATE DATABASE nova;
GRANT ALL ON nova.* TO 'novaUser'@'%' IDENTIFIED BY 'novaPass';
#Cinder
CREATE DATABASE cinder;
GRANT ALL ON cinder.* TO 'cinderUser'@'%' IDENTIFIED BY 'cinderPass';
quit; 复制代码
对于上面命令不了解可以参考下面内容:
安装openstack过程中:RabbitMQ与NTP是什么
学习openstack之linux mysql 操作命令汇总
2.5. 其他
安装其它服务:
apt-get install -y vlan bridge-utils 复制代码
启动 IP_Forwarding:
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 复制代码
2.6. Keystone
安装Keystone
apt-get install -y keystone 复制代码
在文件 /etc/keystone/keystone.conf 中添加如下语句
connection = mysql://keystoneUser:keystonePass@10.10.10.51/keystone 复制代码
上面的配置可能大家的理解不一样这里给出图示:
上面 connection注释掉,替换为上面链接如下图所示
重新启动Keystone,同步数据库
service keystone restart
keystone-manage db_sync 复制代码
下载keystone_basic.sh,keystone_endpoints_basic.sh并执行脚本
#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 复制代码
注释与说明:
查看脚本keystone_basic.sh内容:
上面ip为控制节点的ip
查看脚本keystone_endpoints_basic.sh内容:
上面HOST_IP分别为控制节点的eth0,eth1两个网卡ip。
当脚本./keystone_basic.sh执行时,没有任何输出说明脚本执行成功。
执行./keystone_endpoints_basic.sh脚本时,会看到如下输出:
创建证书,后面不会遇到麻烦:(其实这里是环境变量的配置,我们在后面的操作中,就不需要每次都输入用户名密码等)
nano creds
#Paste the following:
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin_pass
export OS_AUTH_URL="http://192.168.100.51:5000/v2.0/"
# Load it:
source creds 复制代码
使用CLI命令,测试使用安装成功
复制代码
2.7. Glance
安装Glance apt-get install -y glance 复制代码
更新/etc/glance/glance-api-paste.ini 文件
[filter:authtoken]
paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
delay_auth_decision = true
auth_host = 10.10.10.51
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = glance
admin_password = service_pass 复制代码
注释与说明:
即使找到上面[filter:authtoken],然后把相关内容进行粘帖。
替换为如下:
更新 /etc/glance/glance-registry-paste.ini文件 [filter:authtoken]
paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
auth_host = 10.10.10.51
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = glance
admin_password = service_pass 复制代码
[paste_deploy]
flavor = keystone 复制代码
操作同上,也是内容的替换。
替换/etc/glance/glance-api.conf文件
sql_connection = mysql://glanceUser:glancePass@10.10.10.51/glance 复制代码
注释与说明:
同样是将原先sql_connection注释掉,替换为sql_connection = mysql://glanceUser:glancePass@10.10.10.51/glance
更新 /etc/glance/glance-registry.conf: sql_connection = mysql://glanceUser:glancePass@10.10.10.51/glance 复制代码
[paste_deploy]
flavor = keystone 复制代码
到这里我们是否找到一个规律就是无论是替换还是新增加内容,我们只要找到相关标签即可。如果有内容即替换,无内容则添加。
重启glance-api 与 glance-registry services:
service glance-api restart; service glance-registry restart 复制代码
同步 glance 数据库:
复制代码
导入img
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
复制代码
测试安装是否成功
复制代码
我们看到下图,说明安装成功
2.8. Quantum 安装Quantum
apt-get install -y quantum-server
复制代码
更新 the OVS plugin configuration 文件 /etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini:
#Under the database section
[DATABASE]
sql_connection = mysql://quantumUser:quantumPass@10.10.10.51/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 复制代码
注释与说明:
我们看到上面链接替换为sql_connection = mysql://quantumUser:quantumPass@10.10.10.51/quantum即可。下面操作同理
编辑 /etc/quantum/api-paste.ini
[filter:authtoken]
paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
auth_host = 10.10.10.51
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = quantum
admin_password = service_pass 复制代码
更新 /etc/quantum/quantum.conf:
[keystone_authtoken]
auth_host = 10.10.10.51
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 server:
service quantum-server restart 复制代码
2.9. Nova
安装 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 中 authtoken 部分
[filter:authtoken]
paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
auth_host = 10.10.10.51
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 复制代码
修改 the /etc/nova/nova.conf:
[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=10.10.10.51
nova_url=http://10.10.10.51:8774/v1.1/
sql_connection=mysql://novaUser:novaPass@10.10.10.51/nova
root_helper=sudo nova-rootwrap /etc/nova/rootwrap.conf
# Auth
use_deprecated_auth=false
auth_strategy=keystone
# Imaging service
glance_api_servers=10.10.10.51:9292
image_service=nova.image.glance.GlanceImageService
# Vnc configuration
novnc_enabled=true
novncproxy_base_url=http://192.168.100.51:6080/vnc_auto.html
novncproxy_port=6080
vncserver_proxyclient_address=10.10.10.51
vncserver_listen=0.0.0.0
# Network settings
network_api_class=nova.network.quantumv2.api.API
quantum_url=http://10.10.10.51:9696
quantum_auth_strategy=keystone
quantum_admin_tenant_name=service
quantum_admin_username=quantum
quantum_admin_password=service_pass
quantum_admin_auth_url=http://10.10.10.51: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 复制代码
同步数据库:
复制代码
重启与nova有关的所有服务:
cd /etc/init.d/; for i in $( ls nova-* ); do sudo service $i restart; done 复制代码
对于上面命令不了解,可以查看:
安装openstack过程中:Linux for循环的作用是什么?
检查安装是否成功
复制代码
当我们看到下图时候,说明安装成功
2.10. Cinder 安装所需要的 packages:
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
sed -i 's/false/true/g' /etc/default/iscsitarget 复制代码
上面命令的含义是在文件iscsitarget中新的一行插入s/false/true/g
详细可查看安装openstack过程中:sed命令的作用是什么
为保证生效,重启服务:
service iscsitarget start
service open-iscsi start 复制代码
配置 /etc/cinder/api-paste.ini
[filter:authtoken]
paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
service_protocol = http
service_host = 192.168.100.51
service_port = 5000
auth_host = 10.10.10.51
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = cinder
admin_password = service_pass
signing_dir = /var/lib/cinder 复制代码
编辑 /etc/cinder/cinder.conf 文件
[DEFAULT]
rootwrap_config=/etc/cinder/rootwrap.conf
sql_connection = mysql://cinderUser:cinderPass@10.10.10.51/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=10.10.10.51 复制代码
同步数据库
复制代码
创建一个卷组命名为cinder-volumes:
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 复制代码
注释与说明: 首先执行
第一步:
第二步:
第三部:执行fdisk /dev/loop2会有相应命令输入,
只要按照下面命令输入就可以。
复制代码
创建物理卷和卷组:
pvcreate /dev/loop2
vgcreate cinder-volumes /dev/loop2 复制代码
创建成功如下图:
注意: 重启后卷组不会自动挂载 (点击`这个点此 `_ 设置在重启后自动挂载)
重启cinder 服务:
cd /etc/init.d/; for i in $( ls cinder-* ); do sudo service $i restart; done
复制代码
查看cinder服务状态
cd /etc/init.d/; for i in $( ls cinder-* ); do sudo service $i status; done 复制代码
看到下图所示:
2.11. Horizon
安装Horizon
apt-get install -y openstack-dashboard memcached 复制代码
可以删掉默认的ubuntu的them
dpkg --purge openstack-dashboard-ubuntu-theme
复制代码
重启Apache和memcached服务:
service apache2 restart; service memcached restart
复制代码
这时候可以打开 http://192.168.100.51/horizon.
登录用户名:admin
密码:admin_pass
下一篇:openstack零基础入门:OpenStack Grizzly安装指导(2)