原文链接:http://docs.openstack.org/folsom/basic-install/content/basic-install_intro.html
简介
本文档旨在帮助那些想要在Ubuntu 12.04 LTS(使用Ubuntu Cloud Archive)上部署OpenStack Folsom用于开发目的的人。我们将安装三个节点:一个控制器节点,一个网络节点和一个计算节点。当然,你可以根据需要安装更多的节点。对于那些想要安装测试基础设施的OpenStack新手来说,本文档是个好起点。
体系结构
标准Quantum部署包括多达4个不同的物理数据中心网络:
- 管理网络。用于OpenStack组件之间的内部通信。网络的IP地址只应该在数据中心内部可达。
- 数据网络。用于在云部署内部虚拟机之间数据通信。网络的IP地址的编址需求依赖于使用的Quantum插件。
- 外部网络。某些场景下,用于提供虚拟机的Internet访问。网络的IP地址应该对Internet上的任何主机可达。
- API网络:暴露所有的OpenStackAPIs给租户,包括Quantum API。网络的IP地址应该对Internet的所有主机可达。这可能和外部网络是同一个网络,因为可以为外部网络创建一个Quantum子网,通过IP分配范围只使用整个IP块全部地址范围的一部分IP地址。
需求
至少需要三台机器(虚拟或物理)并安装了Ubuntu 12.04(LTS)。
表1.1.架构和节点信息 |
控制器 | 网络 | 计算 | |
主机名 | folsom-controller | folsom-network | folsom-compute |
服务 | MySQL, RabbitMQ, Nova, Cinder, Glance, Keystone, Quantum | Quantum-L3-agent, Quantum-DHCP-agent, Quantum Agent with Open-vSwitch | nova-compute, KVM, nova-api, Quantum Agent with Open-vSwitch |
最小磁盘数 | 2 | 1 | 1 |
外部+API网络 | 7.7.7.7/24 | 7.7.7.8/24 | - |
管理网络 | 192.168.0.1/24 | 192.168.0.2/24 | 192.168.0.3/24 |
数据网络 | - | 10.10.10.1/24 | 10.10.10.2/24 |
网卡总数 | 2 | 3 | 2 |
控制节点
简介
控制器节点将提供:
- 数据库(包括MySQL)
- 队列(包括RabbitMQ)
- KeyStone
- Glance
- Nova(不包括nova-compute)
- Cinder
- Quantum服务器(包括Open-vSwitch插件)
- Dashboard(包括Horizon)
公共服务
操作系统
1. 安装Ubuntu,安装时设置如下参数:
- 时区:UTC
- 主机名:contoller
- 软件包:OpenSSH-Server
操作系统安装完成后,重启服务器。
2. 由于Ubuntu 12.04 LTS默认包含OpenStack Essex,我们将使用Ubuntu Cloud Archive获取Folsom:
apt-get install ubuntu-cloud-keyring |
编辑/etc/apt/sources.list.d/cloud-archive.list:
deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/folsom main
|
升级系统(需要的话重启):
apt-get update && apt-get upgrade
|
3. 配置网络:
Ÿ 编辑/etc/network/interfaces文件:
Ÿ 编辑/etc/sysctl.conf
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
|
然后重启网络服务:
service networking restart
|
Ÿ 编辑/etc/hosts文件,添加主机名controller,network和compute1及相应IP。
4. 安装配置NTP
Ÿ 安装软件包:
Ÿ 配置/etc/ntp.conf文件:
server ntp.ubuntu.com iburst
fudge 127.127.1.0 stratum 10
|
Ÿ 重启服务:
MySQL数据库服务
1. 安装软件包:
apt-get install mysql-server python-mysqldb
|
2. 允许从网络连接数据库:
sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf
|
3. 重启服务:
4. 创建数据库,用户和权限:
mysql -u root -ppassword <<EOF
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'192.168.0.1' \
IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'192.168.0.2' \
IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'192.168.0.3' \
IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
IDENTIFIED BY 'password';
CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON quantum.* TO 'quantum'@'localhost' \
IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON quantum.* TO 'quantum'@'192.168.0.2' \
IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON quantum.* TO 'quantum'@'192.168.0.3' \
IDENTIFIED BY 'password';
|
RabbitMQ消息服务
1. 安装软件包:
apt-get install rabbitmq-server
|
2. 修改默认口令:
rabbitmqctl change_password guest password
|
Keystone
1. 安装软件包:
apt-get install keystone python-keystone python-keystoneclient
|
2. 编辑/etc/keystone/keystone.conf:
log_dir = /var/log/keystone
log_config = /etc/keystone/logging.conf
connection = mysql://keystone:password@localhost:3306/keystone
driver = keystone.identity.backends.sql.Identity
driver = keystone.catalog.backends.sql.Catalog
|
3. 重启Keystone并在数据库创建表:
4. 加载环境变量:
Ÿ 创建novarc文件:
export OS_TENANT_NAME=admin
export OS_PASSWORD=password
export OS_AUTH_URL="http://localhost:5000/v2.0/"
export SERVICE_ENDPOINT="http://localhost:35357/v2.0"
export SERVICE_TOKEN=password
|
Ÿ 导出环境变量:
echo "source novarc">>.bashrc
|
5. 下载数据脚本,并用数据(用户、租户、服务)填充Keystone数据库:
6. 下载endpoint脚本,并创建endpoints(为项目):
如果管理器节点上的管理网络的IP地址与此例不同,请使用如下命令:
./keystone-endpoints.sh -K <ip address of the management network>
|
Glance
1. 安装软件包:
apt-get install glance glance-api glance-registry python-glanceclient glance-common
|
2. 配置Glance:
Ÿ 编辑/etc/glance/glance-api.conf和/etc/glance/glance-registry.conf文件并修改:
sql_connection = mysql://glance:password@localhost/glance
admin_tenant_name = service
admin_password = password
|
对glance-api.conf,修改:
notifier_strategy = rabbit
rabbit_password = password
|
Ÿ 重启Glance服务:
service glance-api restart && service glance-registry restart
|
Ÿ 在数据库中创建Glance数据表:
Ÿ 下载并导入Ubuntu12.04 LTS UEC镜像:
--location http://uec-images.ubuntu.com/releases/12.04/release/ubuntu-12.04-server-cloudimg-amd64-disk1.img \
--is-public true --disk-format qcow2 --container-format bare --name "Ubuntu"
|
Ÿ 检查镜像是否已在索引中引入:
+--------------------------------------+--------+-------------+------------------+-----------+--------+
| ID | Name | Disk Format | Container Format | Size | Status |
+--------------------------------------+--------+-------------+------------------+-----------+--------+
| 0d2664d3-cda9-4937-95b2-909ecf8ea362 | Ubuntu | qcow2 | bare | 233701376 | active |
+--------------------------------------+--------+-------------+------------------+-----------+--------+
|
Ÿ 你还可以安装GlanceReplicator(Folsom新引入)。更多信息在此。
Nova
1. 安装软件包:
apt-get install nova-api nova-cert nova-common \
nova-scheduler python-nova python-novaclient nova-consoleauth novnc \
|
2. 配置Nova:
Ÿ 编辑/etc/nova/api-paste.ini文件并修改:
admin_tenant_name = service
admin_password = password
|
由于我们将使用Cinder进行存储,因此我们还应该删除与”nova-volume”有关的部分:
============================================================
use = call:nova.api.openstack.urlmap:urlmap_factory
/v1: openstack_volume_api_v1
============================================================
============================================================
[composite:openstack_volume_api_v1]
use = call:nova.api.auth:pipeline_factory
noauth = faultwrap sizelimit noauth ratelimit osapi_volume_app_v1
keystone = faultwrap sizelimit authtoken keystonecontext ratelimit osapi_volume_app_v1
keystone_nolimit = faultwrap sizelimit authtoken keystonecontext osapi_volume_app_v1
============================================================
============================================================
[app:osapi_volume_app_v1]
paste.app_factory = nova.api.openstack.volume:APIRouter.factory
============================================================
============================================================
[pipeline:osvolumeversions]
pipeline = faultwrap osvolumeversionapp
paste.app_factory = nova.api.openstack.volume.versions:Versions.factory
============================================================
|
Ÿ 编辑/etc/nova/nova.conf文件并修改:
sql_connection=mysql://nova:password@192.168.0.1/nova
scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler
nova_url=http://192.168.0.1:8774/v1.1/
ec2_url=http://192.168.0.1:8773/services/Cloud
keystone_ec2_url=http://192.168.0.1:5000/v2.0/ec2tokens
api_paste_config=/etc/nova/api-paste.ini
use_deprecated_auth=false
ec2_private_dns_show_ip=True
dmz_cidr=169.254.169.254/32
metadata_host=192.168.0.1
enabled_apis=ec2,osapi_compute,metadata
network_api_class=nova.network.quantumv2.api.API
quantum_url=http://192.168.0.1:9696
quantum_auth_strategy=keystone
quantum_admin_tenant_name=service
quantum_admin_username=quantum
quantum_admin_password=password
quantum_admin_auth_url=http://192.168.0.1:35357/v2.0
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver
linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDriver
firewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDriver
volume_api_class=nova.volume.cinder.API
glance_api_servers=192.168.0.1:9292
image_service=nova.image.glance.GlanceImageService
novncproxy_base_url=http://7.7.7.7:6080/vnc_auto.html
vncserver_proxyclient_address=192.168.0.1
root_helper=sudo nova-rootwrap /etc/nova/rootwrap.conf
|
Ÿ 在数据库中创建Nova数据表:
Ÿ 重启Nova服务:
service nova-cert restart
service nova-consoleauth restart
service nova-scheduler restart
service nova-novncproxy restart
|
Cinder
1. 安装软件包:
apt-get install -y cinder-api cinder-scheduler cinder-volume iscsitarget \
open-iscsi iscsitarget-dkms python-cinderclient linux-headers-`uname -r`
|
2. 配置并启动iSCSI服务:
sed -i 's/false/true/g' /etc/default/iscsitarget
service iscsitarget start
|
3. 配置Cinder
Ÿ 编辑/etc/cinder/cinder.conf文件并修改:
sql_connection = mysql://cinder:password@localhost:3306/cinder
rabbit_password = password
|
Ÿ 编辑/etc/cinder/api-paste.ini文件并修改:
admin_tenant_name = service
admin_password = password
|
Ÿ 创建卷(在第二块磁盘上):
[Create a Linux partition]
vgcreate cinder-volumes /dev/sdb1
|
Ÿ 在数据库中创建Cinder表:
Ÿ 重启服务:
service cinder-api restart
service cinder-scheduler restart
service cinder-volume restart
|
Quantum
1. 安装软件包:
apt-get install quantum-server
|
2. 配置Quantum服务:
Ÿ 编辑/etc/quantum/quantum.conf文件并修改:
quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPluginV2
rabbit_password = password
|
Ÿ 编辑/etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini文件并修改:
sql_connection = mysql://quantum:password@localhost:3306/quantum
tenant_network_type = gre
tunnel_id_ranges = 1:1000
|
注意:选择使用tunnel模式更方便,因为不用为VLANs配置物理路由器。
Ÿ 编辑/etc/quantum/api-paste.ini文件并修改:
admin_tenant_name = service
admin_password = password
|
3. 启动服务:
service quantum-server restart
|
Dashboard(Horizon)
安装软件包:
apt-get install apache2 libapache2-mod-wsgi openstack-dashboard \
memcached python-memcache
|
OpenStack Dashboard现在可以通过http://<controller_node>/horizon访问。我们可以通过admin/password或demo/password登录。
网络节点
简介
网络节点将提供:
Ÿ 支持隧道的VirtualBridging(Open-vSwitch + Quantum Agent)
Ÿ DHCP Server(Quantum DHCP Agent)
Ÿ Virtual Routing(Quantum L3 Agent)
公共服务
操作系统
1. 安装Ubuntu,安装时设置如下参数:
Ÿ 时区:UTC
Ÿ 主机名:folsom-network
Ÿ 软件包:OpenSSH-Server
操作系统安装完成后,重启服务器。
2. 由于Ubuntu 12.04 LTS默认包含OpenStack Essex,我们将使用Ubuntu Cloud Archive获取Folsom:
apt-get install ubuntu-cloud-keyring |
编辑/etc/apt/sources.list.d/cloud-archive.list:
deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/folsom main
|
升级系统(需要的话重启):
apt-get update && apt-get upgrade
|
3. 配置网络:
Ÿ 编辑/etc/network/interfaces文件:
up ifconfig $IFACE 0.0.0.0 up
up ip link set $IFACE promisc on
down ifconfig $IFACE down
|
Ÿ 编辑/etc/sysctl.conf
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
|
然后重启网络服务:
service networking restart
|
Ÿ 编辑/etc/hosts文件,添加主机名controller,network和compute1及相应IP。
4. 安装配置NTP
安装软件包:
配置/etc/ntp.conf文件:
重启服务:
网络服务
Open-vSwitch
1. 安装软件包:
apt-get install quantum-plugin-openvswitch-agent \
quantum-dhcp-agent quantum-l3-agent
|
2. 启动Open vSwitch:
service openvswitch-switch start
|
3. 创建Virtual Bridging:
ovs-vsctl add-port br-ex eth2
|
Quantum
配置Quantum服务:
Ÿ 编辑/etc/quantum/l3_agent.ini文件并修改:
auth_url = http://192.168.0.1:35357/v2.0
admin_tenant_name = service
admin_password = password
metadata_ip = 192.168.0.1
|
Ÿ 编辑/etc/quantum/api-paste.ini文件并修改:
admin_tenant_name = service
admin_password = password
|
Ÿ 编辑/etc/quantum/quantum.conf文件并修改:
quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPluginV2
rabbit_host = 192.168.0.1
rabbit_password = password
|
Ÿ 编辑/etc/quantum/openvswitch/ovs_quantum_plugin.ini文件并修改:
sql_connection = mysql://quantum:password@192.168.0.1:3306/quantum
tenant_network_type = gre
tunnel_id_ranges = 1:1000
integration_bridge = br-int
|
Ÿ 编辑/etc/quantum/dhcp_agent.ini文件并添加:
Ÿ 启动服务:
service quantum-plugin-openvswitch-agent start
service quantum-dhcp-agent restart
service quantum-l3-agent restart
|
虚拟网络
创建虚拟网络
1. 加载环境变量:
Ÿ 创建novarc文件:
export OS_TENANT_NAME=admin
export OS_PASSWORD=password
export OS_AUTH_URL="http://192.168.0.1:5000/v2.0/"
export SERVICE_ENDPOINT="http://192.168.0.1:35357/v2.0"
export SERVICE_TOKEN=password
|
Ÿ 导出变量:
echo "source novarc">>.bashrc
|
2. 下载Quantum脚本。我们使用用例“Provider Router with Private Networks”。
3. 按照你的网络编辑该脚本(公有网络,浮动IP)。
4. 执行脚本。
L3配置
Ÿ 拷贝外部网络ID
Ÿ 编辑/etc/quantum/l3_agent.ini,并粘贴该ID:
gateway_external_network_id = ID
|
Ÿ 复制提供商路由器ID
Ÿ 编辑/etc/quantum/l3_agent.ini,并粘帖该ID:
Ÿ 重启L3代理:
service quantum-l3-agent restart
|
计算节点
简介
计算节点将提供:
Ÿ Hypervisor(KVM)
Ÿ Nova-compute
Ÿ Quantum OVS Agent
公共服务
1. 安装Ubuntu,安装时设置如下参数:
Ÿ 时区:UTC
Ÿ 主机名:folsom-network
Ÿ 软件包:OpenSSH-Server
操作系统安装完成后,重启服务器。
2. 由于Ubuntu 12.04 LTS默认包含OpenStack Essex,我们将使用Ubuntu Cloud Archive获取Folsom:
apt-get install ubuntu-cloud-keyring |
编辑/etc/apt/sources.list.d/cloud-archive.list:
deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/folsom main
|
升级系统(需要的话重启):
apt-get update && apt-get upgrade
|
3. 配置网络:
Ÿ 编辑/etc/network/interfaces文件:
Ÿ 编辑/etc/sysctl.conf
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
|
然后重启网络服务:
service networking restart
|
Ÿ 编辑/etc/hosts文件,添加主机名controller,network和compute1及相应IP。
4. 安装配置NTP
安装软件包:
配置/etc/ntp.conf文件:
重启服务:
Hypervisor
1. 安装我们需要的软件包:
apt-get install -y kvm libvirt-bin pm-utils
|
2. 配置libvirt:
Ÿ 编辑/etc/libvirt/qemu.conf文件并添加:
"/dev/null", "/dev/full", "/dev/zero",
"/dev/random", "/dev/urandom",
"/dev/ptmx", "/dev/kvm", "/dev/kqemu",
"/dev/rtc", "/dev/hpet", "/dev/net/tun"]
|
Ÿ 关闭KVM defaultvirtual bridge以避免混淆:
virsh net-destroy default
virsh net-undefine default
|
Ÿ 允许LiveMigrations:
编辑/etc/libvirt/libvirtd.conf文件:
在/etc/init/libvirt-bin.conf文件中修改libvirtd_opts变量:
env libvirtd_opts="-d -l"
|
编辑/etc/default/libvirt-bin文件:
3. 重启libvirt:
service libvirt-bin restart
|
Nova
1. 安装软件包:
apt-get install nova-compute-kvm
|
2. 配置Nova:
- 编辑/etc/nova/api-paste.ini文件并修改:
admin_tenant_name = service
admin_password = password
|
- 编辑/etc/nova/nova-compute.conf文件并修改:
libvirt_ovs_bridge=br-int
libvirt_vif_type=ethernet
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver
libvirt_use_virtio_for_bridges=True
|
- 编辑/etc/nova/nova.conf并修改:
sql_connection=mysql://nova:password@192.168.0.1/nova
scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler
nova_url=http://192.168.0.1:8774/v1.1/
ec2_url=http://192.168.0.1:8773/services/Cloud
keystone_ec2_url=http://192.168.0.1:5000/v2.0/ec2tokens
api_paste_config=/etc/nova/api-paste.ini
use_deprecated_auth=false
ec2_private_dns_show_ip=True
dmz_cidr=169.254.169.254/32
metadata_host=192.168.0.1
network_api_class=nova.network.quantumv2.api.API
quantum_url=http://192.168.0.1:9696
quantum_auth_strategy=keystone
quantum_admin_tenant_name=service
quantum_admin_username=quantum
quantum_admin_password=password
quantum_admin_auth_url=http://192.168.0.1:35357/v2.0
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver
linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDriver
firewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDriver
compute_driver=libvirt.LibvirtDriver
volume_api_class=nova.volume.cinder.API
glance_api_servers=192.168.0.1:9292
image_service=nova.image.glance.GlanceImageService
novncproxy_base_url=http://7.7.7.7:6080/vnc_auto.html
vncserver_proxyclient_address=192.168.0.3
root_helper=sudo nova-rootwrap /etc/nova/rootwrap.conf
|
service nova-compute restart
|
Quantum
Open vSwitch
1. 安装软件包:
apt-get install -y openvswitch-switch
|
2. 启动Open vSwitch服务:
service openvswitch-switch start
|
3. 配置虚拟网桥:
Quantum
1. 安装软件包:
apt-get install -y quantum-plugin-openvswitch-agent
|
2. 编辑/etc/quantum/quantum.conf文件并修改:
quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPluginV2
rabbit_host = 192.168.0.1
rabbit_password = password
|
3. 编辑/etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini文件并修改:
sql_connection = mysql://quantum:password@192.168.0.1:3306/quantum
tenant_network_type = gre
tunnel_id_ranges = 1:1000
integration_bridge = br-int
|
4. 启动Agent:
service quantum-plugin-openvswitch-agent restart
|
创建第一个虚拟机
1. 现在你可以使用OpenStack API或Dashboard通过demo/password来管理你自己的IaaS:http://192.168.0.1/horizon。
2. 修改安全组”Default”以允许ICMP和SSH。
3. 创建个人的keypair。
4. 在Dashboard中,去”Instances”点击“Launch Instance”生成一个新的虚拟机。
5. 由于Horizon在Folsom发布中不管理L3,因此我们需要从Quantum CLI(使用默认demo租户)配置浮动IP。为了做这一步,你需要得到ext_net ID和虚拟机的port_id:
quantum net-list -- --router:external True
quantum port-list -- --device_id <vm-uuid>
|
6. 现在,我们将创建一个绑定到我们虚拟机的虚端口的浮动IP,并路由到外部网络:
quantum floatingip-create --port_id <port_id> <ext_net_id>
|
7. 就是这样了。你应该能够通过浮动IP ping通你的虚拟机。
总结
我们已经为高级测试创建了基本架构。这种架构和生产环境类似,但没有高可用(HA)和一些服务,如运行OpenStack Object Storage。你当然可以按照需要添加更多的计算节点。如果你需要更多的帮助,请阅读每个项目的官方文档或往OpenStack邮件列表中发邮件。