- 浏览: 910072 次
文章分类
最新评论
-
mxdxm:
总结不错,赞
NoSQL学习笔记(三)之BigTable -
itbj00:
不错,有实际案例的文章,看着简单。
以公司实际应用讲解OpenStack到底是什么 -
追梦--:
赞一个!
数据库插入百万数据 -
enet_java:
<artifactId>PM_Member_EAR ...
使用maven2 打ear包
OpenStack云计算快速入门之二:OpenStack安装与配置
第二部分OpenStack安装与配置
一、引言
本章内容讲解如何在3台物理机上搭建最小化云平台,这3台机器分为称为Server1、Server2和Client1,之后的各章也是如此。Server1承载着Nova、Glance、Swift、Keystone及Horizon(OpenStack的WebUI)服务。Server2只用来运行实例管理的nova运算工作站。由于OpenStack组件采用分布式结构,其中的任何一部分或几个部分都可以安装在任意服务器上。
Client1并不是安装所必须的,在本例中,它仅用来制作打包镜像,并使用它访问Horizon在Web上管理OpenStack设施。于是就避免了使用服务器来完成镜像打包等诸如此类的任务了,而且在制作桌面系统镜像时如果包含视窗界面的话,我们也只能相应地使用有GUI的电脑来完成,故而最好还是别在服务器上玩火了吧。建议Client1支持虚拟化技术,以便在制作完镜像打包时可以运行KVM。
OpenStack安装需要设定主机名、IP地址等,按你实际的环境进行配置。下表是译者安装的网络参数清单:
二、Server1
正如上表所示,Server1包含了所有的Nova服务:nova-compute、nova-api、nova-volume、nova-network以及Glance、Swift、Keystone和Horizon。这台服务器上需要双网卡。
(一)安装底层OS
不必多想,请参照下述说明,记住相关参数,选择64位Ubuntu12.04版,进行安装。
l创建的第一个用户命名为“localadmin”
l为eth0和eth1设定IP及其相关参数
l在安装服务包中,仅选择“Openssh-server”作为预装项
因为Server1上也将安装nova-volume软件,而nova-volume需要一块专用分区,所以在安装UbuntuServer时请选择手动分区,并另行创建一块合适大小的分区。从本章起,教程都将以/dev/sda6作为这块分区。你可以根据自己分区的实际情况进行修改。此外,请使用fdisk工具将该分区需要格式化为LVM(8e)格式,这一操作在安装中或刚安装完毕格式化均可。进一步,如果你还计划在这台服务器上再新建一个分区配给Swift的话,那么就新建一块分区并参照本章后文“安装Swift”一节相关内容进行安装。
待12.04的UbuntuOS安装完毕后,使用下列命令更新系统:
sudoapt-getupdate
sudoapt-getupgrade
安装网桥工具bridge-utils:
sudoapt-getinstallbridge-utils
(二)配置网络
编辑/etc/network/interfaces文件,如下所示:
autolo
ifaceloinetloopback
autoeth0
ifaceeth0inetstatic
address10.10.10.2
netmask255.255.255.0
broadcast10.10.10.255
gateway10.10.10.1
dns-nameservers10.10.8.3
autoeth1
ifaceeth1inetstatic
address192.168.3.1
netmask255.255.255.0
network192.168.3.0
broadcast192.168.3.255
随后重新启动网络:
sudo/etc/init.d/networkingrestart
(三)NTP服务器
安装NTP软件包。这个时间服务器将为所有节点提供支持。OpenStack所有组件的时间都必须同步,于是我们就在Server1上安装NTP服务并且让其他服务器或节点与之保持同步。
sudoapt-getinstallntp
译者注:NTP(NetworkTimeProtocol),是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。[来源:百度百科]
打开文件/etc/ntp.conf增加以下三行内容,目的是让本服务器时间与外部服务器时间同步。如果不能访问外网,NTP服务器将使用本机硬件时钟作为第二选择。
serverntp.ubuntu.com
server127.127.1.0
fudge127.127.1.0stratum10
然后重启NTP使配置生效:
sudoservicentprestart
请确保服务器IP地址可以被DNS解析。如果不能,则在/etc/hosts文件中手工加入。
(四)数据库
我们有很多选择:MySQL、PostgreSQL或者SQLite等都能很好地对Nova和Glance提供数据支持。究竟选哪个,自己定吧。本例中采用MySQL。
MySQL
安装mysql-server和python-mysqldb包:
sudoapt-getinstallmysql-serverpython-mysqldb
为mysql创建root密码,在此使用“mygreatsecret”。随后编辑mysql配置文件/etc/mysql/my.cnf,将绑定地址从127.0.0.1改为0.0.0.0,如下所示:
bind-address=0.0.0.0
重启MySQL服务器让其开始监听所有端口:
sudorestartmysql
创建数据库
我们将要为nova、glance和keystone创建很多东东,各种数据库、表及用户。话音未落,这就开始了:
创建名为“nova”的数据库:
sudomysql-uroot-pmygreatsecret-e'CREATEDATABASEnova;'
新建一个用户,名为“novadbadmin”:
sudomysql-uroot-pmygreatsecret-e'CREATEUSERnovadbadmin;'
授予novadbadmin用户nova数据库全部权限:
sudomysql-uroot-pmygreatsecret-e"GRANTALLPRIVILEGESONnova.*TO'novadbadmin'@'%';"
为novadbadmin同志创建密码(译者注:密码是novasecret,后文类似之处不多言,请详见命令):
sudomysql-uroot-pmygreatsecret-e"SETPASSWORDFOR'novadbadmin'@'%'=PASSWORD('novasecret');"
Glance登场,还是重复刚才的道道,首先创建一个名为glance的数据库:
sudomysql-uroot-pmygreatsecret-e'CREATEDATABASEglance;'
然后为这个新建的数据库添加一个用户“glancedbadmin”:
sudomysql-uroot-pmygreatsecret-e'CREATEUSERglancedbadmin;'
接着,光荣授予他本数据库的全部权限:
sudomysql-uroot-pmygreatsecret-e"GRANTALLPRIVILEGESONglance.*TO'glancedbadmin'@'%';"
是的,最后一步,为该用户分配密码:
sudomysql-uroot-pmygreatsecret-e"SETPASSWORDFOR'glancedbadmin'@'%'=PASSWORD('glancesecret');"
很烦的,keystone出场了。刚才的大循环,至此开始演绎第三遍:
sudomysql-uroot-pmygreatsecret-e'CREATEDATABASEkeystone;'
sudomysql-uroot-pmygreatsecret-e'CREATEUSERkeystonedbadmin;'
sudomysql-uroot-pmygreatsecret-e"GRANTALLPRIVILEGESONkeystone.*TO'keystonedbadmin'@'%';"
sudomysql-uroot-pmygreatsecret-e"SETPASSWORDFOR'keystonedbadmin'@'%'=PASSWORD('keystonesecret')"
现在,MySQL部分的工作结束。
(五)Keystone
Keystone是OpenStack的认证服务。使用以下命令进行安装:
sudoapt-getinstallkeystonepython-keystonepython-keystoneclient
打开/etc/keystone/keystone.conf文件,将这一行:
admin_token=ADMIN
改为:
admin_token=admin
(本教程中我们将一直使用admin作为令牌)
本例中,我们使用MySQL来存储keystone配置,则将/etc/keystone/keystone.conf中的这句配置:
connection=sqlite:////var/lib/keystone/keystone.db
换成:
connection=mysql://keystonedbadmin:keystonesecret@10.10.10.2/keystone
然后,重启Keystone:
sudoservicekeystonerestart
接着,执行以下命令同步数据库:
sudokeystone-managedb_sync
最后,有些环境变量是OpenStack运行所必须的:
exportSERVICE_ENDPOINT="http://localhost:35357/v2.0"
exportSERVICE_TOKEN=admin
当然为了避免下次系统重启后,还得将这些变量再次export,最稳妥的办法就是将其写入~/.bashrc中。
创建租间
使用以下命令创建两个租间,admin和service:
keystonetenant-create--nameadmin
keystonetenant-create--nameservice
创建用户
执行以下命令,创建四个用户admin、nova、glance及swift:
keystoneuser-create--nameadmin--passadmin--emailadmin@foobar.com
keystoneuser-create--namenova--passnova--emailnova@foobar.com
keystoneuser-create--nameglance--passglance--emailglance@foobar.com
keystoneuser-create--nameswift--passswift--emailswift@foobar.com
创建角色
使用命令创建两个角色,admin和Member(译者注:注意是大写M):
keystonerole-create--nameadmin
keystonerole-create--nameMember
查看租间、用户和角色
刚才建立的租间、用户和角色可以通过如下命令进行查看:
租间列表:
keystonetenant-list
+----------------------------------+--------------------+---------+
|id|name|enabled|
+----------------------------------+--------------------+---------+
|7f95ae9617cd496888bc412efdceabfd|admin|True|
|c7970080576646c6959ee35970cf3199|service|True|
+----------------------------------+--------------------+---------+
用户列表:
keystoneuser-list
+----------------------------------+---------+-------------------+--------+
|id|enabled|email|name|
+----------------------------------+---------+-------------------+--------+
|1b986cca67e242f38cd6aa4bdec587ca|True|swift@foobar.com|swift|
|518b51ea133c4facadae42c328d6b77b|True|glance@foobar.com|glance|
|b3de3aeec2544f0f90b9cbfe8b8b7acd|True|admin@foobar.com|admin|
|ce8cd56ca8824f5d845ba6ed015e9494|True|nova@foobar.com|nova|
+----------------------------------+---------+-------------------+--------+
角色列表:
keystonerole-list
+----------------------------------+----------------------+
|id|name|
+----------------------------------+----------------------+
|2bbe305ad531434991d4281aaaebb700|admin|
|d983800dd6d54ee3a1b1eb9f2ae3291f|Member|
+----------------------------------+----------------------+
请大家格外注意id列中的值,虽然很长,但随后为用户绑定角色,继而把用户配入租间中时可全靠它们了。
为特定租间中的用户绑定角色
现在我们先为刚刚创建的用户绑定角色,通过如下命令格式可以将特定租间中的特定用户增加角色(译者注:仅是命令格式,随后才是真正执行的命令):
keystoneuser-role-add--user$USER_ID--role$ROLE_ID--tenant_id$TENANT_ID
其中id字段可以通过keystoneuser-list,keystonerole-list和keystonetenant-list命令获得。
下面开始为“admin”租间中的“admin”用户绑定“admin”角色:
keystoneuser-role-add--userb3de3aeec2544f0f90b9cbfe8b8b7acd--role2bbe305ad531434991d4281aaaebb700--tenant_id7f95ae9617cd496888bc412efdceabfd
接着执行如下命令,为“service”租间中的“nova”、“glance”、“swift”用户绑定“admin”角色:
keystoneuser-role-add--userce8cd56ca8824f5d845ba6ed015e9494--role2bbe305ad531434991d4281aaaebb700--tenant_idc7970080576646c6959ee35970cf3199
keystoneuser-role-add--user518b51ea133c4facadae42c328d6b77b--role2bbe305ad531434991d4281aaaebb700--tenant_idc7970080576646c6959ee35970cf3199
keystoneuser-role-add--user1b986cca67e242f38cd6aa4bdec587ca--role2bbe305ad531434991d4281aaaebb700--tenant_idc7970080576646c6959ee35970cf3199
Horizon和Swift只“Member”角色即可,所以相应地执行如下命令:
keystoneuser-role-add--userb3de3aeec2544f0f90b9cbfe8b8b7acd--roled983800dd6d54ee3a1b1eb9f2ae3291f--tenant_id7f95ae9617cd496888bc412efdceabfd
注意,在执行自己的安装时,请千万按照实际安装中的id进行设置,照抄本文id必将出错!
创建服务
至此,我们该创建授权用户可以享用的服务了,命令格式如下:
keystoneservice-create--nameservice_name--typeservice_type--description'Descriptionoftheservice'
安装上述格式,创建nova-compute、nova-volume、glance、swift、keystone及ec2服务:
keystoneservice-create--namenova--typecompute--description'OpenStackComputeService'
keystoneservice-create--namevolume--typevolume--description'OpenStackVolumeService'
keystoneservice-create--nameglance--typeimage--description'OpenStackImageService'
keystoneservice-create--nameswift--typeobject-store--description'OpenStackStorageService'
keystoneservice-create--namekeystone--typeidentity--description'OpenStackIdentityService'
keystoneservice-create--nameec2--typeec2--description'EC2Service'
刚才创建的每个服务都拥有唯一的id,要查看服务id,使用如下命令即可:
keystoneservice-list
+----------------------------------+----------+--------------+----------------------------+
|id|name|type| description|
+----------------------------------+----------+--------------+----------------------------+
|1e93ee6c70f8468c88a5cb1b106753f3|nova|compute|OpenStackComputeService|
|28fd92ffe3824004996a3e04e059d875|ec2|ec2|EC2Service |
|7d4ec192dfa1456996f0f4c47415c7a7|keystone|identity|OpenStackIdentityService|
|96f35e1112b143e59d5cd5d0e6a8b22d|swift|object-store|OpenStackStorageService|
|f38f4564ff7b4e43a52b2f5c1b75e5fa|volume|volume|OpenStackVolumeService|
|fbafab6edcab467bb734380ce6be3561|glance|image|OpenStackImageService|
+----------------------------------+----------+--------------+----------------------------+
这些id将被用于定义所属服务的入口(endpoint)。
创建入口
创建服务入口的命令格式是:
keystoneendpoint-create--regionregion_name--service_idservice_id--publicurlpublic_url--adminurladmin_url--internalurlinternal_url
使用如下命令创建nova-compute入口:
keystoneendpoint-create--regionmyregion--service_id1e93ee6c70f8468c88a5cb1b106753f3--publicurl'http://10.10.10.2:8774/v2/$(tenant_id)s'--adminurl'http://10.10.10.2:8774/v2/$(tenant_id)s'--internalurl'http://10.10.10.2:8774/v2/$(tenant_id)s'
使用如下命令创建nova-volume入口:
keystoneendpoint-create--regionmyregion--service_idf38f4564ff7b4e43a52b2f5c1b75e5fa--publicurl'http://10.10.10.2:8776/v1/$(tenant_id)s'--adminurl'http://10.10.10.2:8776/v1/$(tenant_id)s'--internalurl'http://10.10.10.2:8776/v1/$(tenant_id)s'
使用如下命令创建glance入口:
keystoneendpoint-create--regionmyregion--service_idfbafab6edcab467bb734380ce6be3561--publicurl'http://10.10.10.2:9292/v1'--adminurl'http://10.10.10.2:9292/v1'--internalurl'http://10.10.10.2:9292/v1'
使用如下命令创建swift入口:
keystoneendpoint-create--regionmyregion--service_id96f35e1112b143e59d5cd5d0e6a8b22d--publicurl'http://10.10.10.2:8080/v1/AUTH_$(tenant_id)s'--adminurl'http://10.10.10.2:8080/v1'--internalurl'http://10.10.10.2:8080/v1/AUTH_$(tenant_id)s'
使用如下命令创建keystone入口:
keystoneendpoint-create--regionmyregion--service_id7d4ec192dfa1456996f0f4c47415c7a7--publicurlhttp://10.10.10.2:5000/v2.0--adminurlhttp://10.10.10.2:35357/v2.0--internalurlhttp://10.10.10.2:5000/v2.0
使用如下命令创建ec2入口:
keystoneendpoint-create--regionmyregion--service_id28fd92ffe3824004996a3e04e059d875--publicurlhttp://10.10.10.2:8773/services/Cloud--adminurlhttp://10.10.10.2:8773/services/Admin--internalurlhttp://10.10.10.2:8773/services/Cloud
(六)Glance
使用以下命令安装glance:
sudoapt-getinstallglanceglance-apiglance-clientglance-commonglance-
registrypython-glance
配置Glance服务
Glance默认使用SQLite,MySQL或PostgreSQL也可以很好地与Glance工作。
打开/etc/glance/glance-api-paste.ini文件并在末尾编辑如下内容:
admin_tenant_name=%SERVICE_TENANT_NAME%
admin_user=%SERVICE_USER%
admin_password=%SERVICE_PASSWORD%
这些值需要用刚才我们安装中的实际值进行替换,admin_tenant_name应该是“service”,admin_user这里是“glance”、admin_password是“glance”。
编辑完这三行应该是如下的样子:
admin_tenant_name=service
admin_user=glance
admin_password=glance
接着再打开/etc/glance/glance-registry-paste.ini文件,也如上述操作一样在文件尾部进行同样的编辑。
然后,修改glance数据库连接为MySQL,编辑/etc/glance/glance-registry.conf,找到“sql_connection=”这句作如下修改:
sql_connection=mysql://glancedbadmin:glancesecret@10.10.10.2/glance
紧接着还是这份文件,在底部增加如下设置,目的是让glance使用keystone授权:
[paste_deploy]
flavor=keystone
打开/etc/glance/glance-api.conf文件,在文件末尾增加如下配置:
[paste_deploy]
flavor=keystone
在MySQL数据库中创建glanceschema,进行同步:
sudoglance-manageversion_control0
sudoglance-managedb_sync
上述改动全部完成后,重启glance-api和glance-registry服务:
sudorestartglance-api
sudorestartglance-registry
设置如下环境变量,你也可以将其写入~/.bashrc中:
exportSERVICE_TOKEN=admin
exportOS_TENANT_NAME=admin
exportOS_USERNAME=admin
exportOS_PASSWORD=admin
exportOS_AUTH_URL="http://localhost:5000/v2.0/"
exportSERVICE_ENDPOINT=http://localhost:35357/v2.0
现在我们可以使用这个命令来测试glance是否正确安装:
glanceindex
如果这条命令没有返回任何结果,则说明glance已经正确安装完毕,并与Keystone正常通信。若是稍微探究一下的话,上述命令其实有返回值,正确安装情况下的返回值是0,可以使用echo$?进行查看。
在Glance正确配置且使用keystone作为授权机制后,我们便可以上传镜像到glance了,相关内容详见后文中的“镜像管理(ImageManagement)”。
(七)Nova
先使用如下命令安装nova及其相关组件:
sudoapt-getinstallnova-apinova-certnova-computenova-compute-kvmnova-docnova-networknova-objectstorenova-schedulernova-volumerabbitmq-servernovncnova-consoleauth
配置Nova
以如下配置为例,编辑nova主配文件/etc/nova/nova.conf:
--dhcpbridge_flagfile=/etc/nova/nova.conf
--dhcpbridge=/usr/bin/nova-dhcpbridge
--logdir=/var/log/nova
--state_path=/var/lib/nova
--lock_path=/run/lock/nova
--allow_admin_api=true
--use_deprecated_auth=false
--auth_strategy=keystone
--scheduler_driver=nova.scheduler.simple.SimpleScheduler
--s3_host=10.10.10.2
--ec2_host=10.10.10.2
--rabbit_host=10.10.10.2
--cc_host=10.10.10.2
--nova_url=http://10.10.10.2:8774/v1.1/
--routing_source_ip=10.10.10.2
--glance_api_servers=10.10.10.2:9292
--image_service=nova.image.glance.GlanceImageService
--iscsi_ip_prefix=192.168.4
--sql_connection=mysql://novadbadmin:novasecret@10.10.10.2/nova
--ec2_url=http://10.10.10.2:8773/services/Cloud
--keystone_ec2_url=http://10.10.10.2:5000/v2.0/ec2tokens
--api_paste_config=/etc/nova/api-paste.ini
--libvirt_type=kvm
--libvirt_use_virtio_for_bridges=true
--start_guests_on_host_boot=true
--resume_guests_state_on_host_boot=true
#vncspecificconfiguration
--novnc_enabled=true
--novncproxy_base_url=http://10.10.10.2:60
--vncserver_proxyclient_address=10.10.10.2
--vncserver_listen=10.10.10.2
#networkspecificsettings
--network_manager=nova.network.manager.FlatDHCPManager
--public_interface=eth0
--flat_interface=eth1
--flat_network_bridge=br100
--fixed_range=192.168.4.1/27
--floating_range=10.10.10.2/27
--network_size=32
--flat_network_dhcp_start=192.168.4.33
--flat_injected=False
--force_dhcp_release
--iscsi_helper=tgtadm
--connection_type=libvirt
--root_helper=sudonova-rootwrap
--verbose
创建一个物理卷:
sudopvcreate/dev/sda6
创建一个名为“nova-volumnes”的卷组:
sudovgcreatenova-volumes/dev/sda6
修改/etc/nova文件夹的属主及/etc/nova/nova.conf文件的访问权限:
sudochown-Rnova:nova/etc/nova
sudochmod644/etc/nova/nova.conf
进入/etc/nova/api-paste.ini文件,找到末尾三行:
admin_tenant_name=%SERVICE_TENANT_NAME%
admin_user=%SERVICE_USER%
admin_password=%SERVICE_PASSWORD%
用之前创建的名字进行替换(译者注:和Glance如出一辙,只是这次是nova),编辑完毕如下所示:
admin_tenant_name=service
admin_user=nova
admin_password=nova
仍然在MySQL数据库进行同步:
sudonova-managedbsync
为实例提供IP池:
sudonova-managenetworkcreateprivate--fixed_range_v4=192.168.4.32/27--num_networks=1--bridge=br100--bridge_interface=eth1--network_size=32
输出环境变量:
exportOS_TENANT_NAME=admin
exportOS_USERNAME=admin
exportOS_PASSWORD=admin
exportOS_AUTH_URL="http://localhost:5000/v2.0/"
重启nova服务:
sudorestartlibvirt-bin;sudorestartnova-network;sudorestartnova-compute;sudorestartnova-api;sudorestartnova-objectstore;sudorestartnova-scheduler;sudorestartnova-volume;sudorestartnova-consoleauth;
执行下列命令测试nova是否正确安装:
sudonova-manageservicelist
BinaryHost Zone StatusState Updated_At
nova-networkserver1 nova enabled:-) 2012-04-2008:58:43
nova-schedulerserver1 nova enabled:-) 2012-04-2008:58:44
nova-volumeserver1 nova enabled:-) 2012-04-2008:58:44
nova-computeserver1 nova enabled:-) 2012-04-2008:58:45
nova-certserver1 nova enabled:-) 2012-04-2008:58:43
若所有组件都是微笑,说明nova已经正确安装完毕。
(八)OpenStack管理面板
执行下列命令安装管理面板:
sudoapt-getinstallopenstack-dashboard
重启Apache:
sudoserviceapache2restart
好消息,现在打开浏览器输入server1的IP地址,就可以看到OpenStack的管理面板登陆界面了。默认用户名和密码都是“admin”。在管理面板中,可以进行创建密匙对,创建、编辑安全群组,新建实例,添加卷等操作。具体内容详见后文“OpenStackDashboard”章节。
(九)Swift
安装Swift
最重要的部分是swift的代理、账户、容器及对象服务器:
sudoapt-getinstallswiftswift-proxyswift-accountswift-containerswift-object
随后安装一些支持组件,xfsprogs(支持XFS文件系统)、python.pastedeploy(访问keystone)和curl(测试swift):
sudoapt-getinstallxfsprogscurlpython-pastedeploy
Swift存储端
有两种方法来创建或制备存储端,一种是采用现有的分区或卷作为存储设备,另一种是创建环回文件(Loopbackfile)并将当做存储设备。安装时,两种方式自选。
1.分区作为存储设备
如果在安装OS时为Swift预留了一个分区,你就可以直接使用它。如果该分区没有使用过或仍是空闲空间(比如/dev/sdb3),就应该把它格式化为xfs文件系统,接着编辑/etc/fstab中该分区的挂载点(注意:请根据实际情况选择你自定的设备,本教程假定手头未使用也没分区的空闲空间在/dev/sdb上):
sudofdisk/dev/sdb
Typenfornewpartition
Typeeforextendedpartion
Chooseappropriatepartitionnumber(orgowiththedefault)
Choosefirstandlastsectorstosettheharddisksize(orgowithdefaults)
Notethat83isthepartitiontypenumberforLinux
Typewtowritechangestothedisk
上述命令将创建一个譬如/dev/sdb3的分区,接着我们便将其格式化为XFS。记得格式化前要先使用命令“sudofdisk-l”查看当前分区表,确定系统列出的分区含有你即将格式化的目标分区。最后,如果刚才xfsprogs成功安装的话,我们才能够使用以下命令:
sudomkfs.xfs-isize=1024/dev/sdb3
sudotune2fs-l/dev/sdb3|grep-iinode
创建一个该分区的挂载点,并命名为“swift_backend”:
sudomkdir/mnt/swift_backend
紧接着编辑/etc/fstab文件写入如下内容以便系统启动时自动加载这个分区:
/dev/sdb3/mnt/swift_backendxfsnoatime,nodiratime,nobarrier,logbufs=800
2.环回文件作为存储设备
创建一个空文件作为Swift存储的环回设备,在这里我们使用diskcopy命令创建它并命名为swift-disk,还将为其分配1G的磁盘空间。如果空间不够,可以通过改变seek值来增加空间。随后格式化为XFS:
sudoddif=/dev/zeroof=/srv/swift-diskbs=1024count=0seek=1000000
sudomkfs.xfs-isize=1024/srv/swift-disk
file/srv/swift-disk
swift-disk1:SGIXFSfilesystemdata(blksz4096,inosz1024,v2dirs)
创建挂载点:
sudomkdir/mnt/swift_backend
写入/etc/fstab:
/srv/swift-disk/mnt/swift_backendxfsloop,noatime,nodiratime,nobarrier,logbufs=800
3.使用存储
挂载存储分区前,需要创建一些设备节点并设置其属主和主群为“Swift”:
sudomount/mnt/swift_backend
pushd/mnt/swift_backend
sudomkdirnode1node2node3node4
popd
sudochownswift.swift/mnt/swift_backend/*
foriin{1..4};dosudoln-s/mnt/swift_backend/node$i/srv/node$i;done;
sudomkdir-p/etc/swift/account-server/etc/swift/container-server/etc/
swift/object-server/srv/node1/device/srv/node2/device/srv/node3/device/srv/node4/device
sudomkdir/run/swift
sudochown-L-Rswift.swift/etc/swift/srv/node[1-4]//run/swift
为了在系统启动时启动Swift服务,需要把如下两行命令写入/etc/rc.local里,位置在“exit0;”之前:
sudomkdir/run/swift
sudochownswift.swift/run/swift
配置远程备份
Rsync用来维护对象副本,许多swift服务都使用它保持对象一致性及进行更新操作。所有存储节点都将享用此配置:
首先编辑/etc/default/rsync文件:
SetRSYNC_ENABLE=true
然后编辑/etc/rsyncd.conf配置文件,如下所示:
#Generalstuff
uid=swift
gid=swift
logfile=/var/log/rsyncd.log
pidfile=/run/rsyncd.pid
address=127.0.0.1
#AccountServerreplicationsettings
[account6012]
maxconnections=25
path=/srv/node1/
readonly=false
lockfile=/run/lock/account6012.lock
[account6022]
maxconnections=25
path=/srv/node2/
readonly=false
lockfile=/run/lock/account6022.lock
[account6032]
maxconnections=25
path=/srv/node3/
readonly=false
lockfile=/run/lock/account6032.lock
[account6042]
maxconnections=25
path=/srv/node4/
readonly=false
lockfile=/run/lock/account6042.lock
#Containerserverreplicationsettings
[container6011]
maxconnections=25
path=/srv/node1/
readonly=false
lockfile=/run/lock/container6011.lock
[container6021]
maxconnections=25
path=/srv/node2/
readonly=false
lockfile=/run/lock/container6021.lock
[container6031]
maxconnections=25
path=/srv/node3/
readonly=false
lockfile=/run/lock/container6031.lock
[container6041]
maxconnections=25
path=/srv/node4/
readonly=false
lockfile=/run/lock/container6041.lock
#ObjectServerreplicationsettings
[object6010]
maxconnections=25
path=/srv/node1/
readonly=false
lockfile=/run/lock/object6010.lock
[object6020]
maxconnections=25
path=/srv/node2/
readonly=false
lockfile=/run/lock/object6020.lock
[object6030]
maxconnections=25
path=/srv/node3/
readonly=false
lockfile=/run/lock/object6030.lock
[object6040]
maxconnections=25
path=/srv/node4/
readonly=false
lockfile=/run/lock/object6040.lock
最后重新启动服务完成rsync配置:
sudoservicersyncrestart
配置Swift组件
详细的配置选项参见http://swift.openstack.org/deployment_guide.html。如果安装了swift-doc包的话,则可以在/usr/share/doc/swift-doc/html目录下直接查看。Python使用paste.deploy管理配置。默认配置选项在[DEFAULT]段中,后面配置其它特殊项会覆盖默认段中的相关内容。格式如下:
THESYNTAXsetoption_name=value
以下是一份paste.deploy的配置样例,仅供参考:
[DEFAULT]
name1=globalvalue
name2=globalvalue
name3=globalvalue
setname4=globalvalue
[pipeline:main]
pipeline=myapp
[app:myapp]
use=egg:mypkg#myapp
name2=localvalue
setname3=localvalue
setname5=localvalue
name6=localvalue
创建并编辑/etc/swift/swift.conf文件,并写入如下配置:
[swift-hash]
#randomuniquestringthatcanneverchange(DONOTLOSE).I'musing03c9f48da2229770.
#od-tx8-N8-An</dev/random
#Theabovecommandcanbeusedtogeneraterandomastring.
swift_hash_path_suffix=03c9f48da2229770
特别的,当建立更多的节点时,你需要记住随机串。不要照抄本例,请通过以下命令生成自己的随机字符串:
od-tx8-N8-An</dev/random
1.配置Swift代理服务器
代理服务器是swift的门卫,它的职责是检测合法性。它将审查:一、请求是否伪造,二、请求使用资源的用户身份。具体操作由keystone之类的认证服务器来协助完成。
创建并编辑/etc/swift/proxy-server.conf并增加如下内容:
[DEFAULT]
bind_port=8080
user=swift
swift_dir=/etc/swift
[pipeline:main]
#Orderofexecutionofmodulesdefinedbelow
pipeline=catch_errorshealthcheckcacheauthtokenkeystoneproxy-server
[app:proxy-server]
use=egg:swift#proxy
allow_account_management=true
account_autocreate=true
setlog_name=swift-proxy
setlog_facility=LOG_LOCAL0
setlog_level=INFO
setaccess_log_name=swift-proxy
setaccess_log_facility=SYSLOG
setaccess_log_level=INFO
setlog_headers=True
account_autocreate=True
[filter:healthcheck]
use=egg:swift#healthcheck
[filter:catch_errors]
use=egg:swift#catch_errors
[filter:cache]
use=egg:swift#memcache
setlog_name=cache
[filter:authtoken]
paste.filter_factory=keystone.middleware.auth_token:filter_factory
auth_protocol=http
auth_host=127.0.0.1
auth_port=35357
auth_token=admin
service_protocol=http
service_host=127.0.0.1
service_port=5000
admin_token=admin
admin_tenant_name=service
admin_user=swift
admin_password=swift
delay_auth_decision=0
[filter:keystone]
paste.filter_factory=keystone.middleware.swift_auth:filter_factory
operator_roles=admin,swiftoperator
is_admin=true
注意:可以使用apt-get安装swift-doc软件包,安装后许多文档都收录在/usr/share/doc/swift-doc/html下,本配置样例也是如此。
2.配置Swift账户服务器
默认swift容器服务配置文件为/etc/swift/account-server.conf:
[DEFAULT]
bind_ip=0.0.0.0
workers=2
[pipeline:main]
pipeline=account-server
[app:account-server]
use=egg:swift#account
[account-replicator]
[account-auditor]
[account-reaper]
所有的accountserver配置文件都在/etc/swift/account-server目录中。与/srv里的设备相对应,我们创建1.conf、2.conf等等文件,并将它们放到/etc/swift/account-server/下。以下是/etc/swift/account-server/1.conf配置文件的内容:
[DEFAULT]
devices=/srv/node1
mount_check=false
bind_port=6012
user=swift
log_facility=LOG_LOCAL2
[pipeline:main]
pipeline=account-server
[app:account-server]
use=egg:swift#account
[account-replicator]
vm_test_mode=no
[account-auditor]
[account-reaper]
对其它设备也是如此,比如/srv/node2、/srv/node3、/srv/node4等,我们分别创建2.conf,3.conf和4.conf与之对应。现在利用1.conf进行复制生成其余文件,并一一设置唯一的绑定端口及本地日志值:
sudocp/etc/swift/account-server/1.conf/etc/swift/account-server/2.conf
sudocp/etc/swift/account-server/1.conf/etc/swift/account-server/3.conf
sudocp/etc/swift/account-server/1.conf/etc/swift/account-server/4.conf
sudosed-i's/6012/6022/g;s/LOCAL2/LOCAL3/g;s/node1/node2/g'/etc/swift/account-server/2.conf
sudosed-i's/6012/6032/g;s/LOCAL2/LOCAL4/g;s/node1/node3/g'/etc/swift/account-server/3.conf
sudosed-i's/6012/6042/g;s/LOCAL2/LOCAL5/g;s/node1/node4/g'/etc/swift/account-server/4.conf
3.配置Swift容器服务器
默认swift容器服务配置文件为/etc/swift/container-server.conf:
[DEFAULT]
bind_ip=0.0.0.0
workers=2
[pipeline:main]
pipeline=container-server
[app:container-server]
use=egg:swift#container
[container-replicator]
[container-updater]
[container-auditor]
[container-sync]
与account-server类似,我们同样创建/etc/swift/container-server/1.conf等等文件与/srv设备匹配,这是1.conf文件内容:
[DEFAULT]
devices=/srv/node1
mount_check=false
bind_port=6011
user=swift
log_facility=LOG_LOCAL2
[pipeline:main]
pipeline=container-server
[app:container-server]
use=egg:swift#container
[container-replicator]
vm_test_mode=no
[container-updater]
接着利用1.conf继续创建2.conf、3.conf和4.conf。并修改端口(分别是6021、6031和6041)及本地日志值(LOG_LOCAL3、LOG_LOCAL4和LOG_LOCAL5)。
4.配置Swift对象服务器
默认swift容器服务配置文件为/etc/swift/object-server.conf:
[DEFAULT]
bind_ip=0.0.0.0
workers=2
[pipeline:main]
pipeline=object-server
[app:object-server]
use=egg:swift#object
[object-replicator]
[object-updater]
[object-auditor]
与account-server和container-server一样,我们同样创建/etc/swift/object-server/1.conf等等文件与/srv设备匹配,这是1.conf文件内容:
[DEFAULT]
devices=/srv/node1
mount_check=false
bind_port=6010
user=swift
log_facility=LOG_LOCAL2
[pipeline:main]
pipeline=object-server
[app:object-server]
use=egg:swift#object
[object-replicator]
vm_test_mode=no
[object-updater]
[object-auditor]
继而利用1.conf继续创建2.conf、3.conf和4.conf。并修改端口(分别是6020、6030和6040)及本地日志值(LOG_LOCAL3、LOG_LOCAL4和LOG_LOCAL5)。
5.配置SwiftRing服务器
Ring是swift的一个极为重要的组件,它维护着对象的真实物理位置信息,对象的副本及多种设备。创建与对象服务、容器服务和账户服务相对应的ring-builder文件:
pushd/etc/swift
sudoswift-ring-builderobject.buildercreate1831
sudoswift-ring-buildercontainer.buildercreate1831
sudoswift-ring-builderaccount.buildercreate1831
注意:执行以上命令时需要在/etc/swift目录下。
命令中的参数指定了分区、副本和小时的数量,用来限制分区多次移动。可以参考man页面中的swift-ring-builder获取更多信息。
现在添加区域以均衡ring服务。命令格式如下:
swift-ring-builder<builder_file>add<zone>-<ip_address>:<port>/<device><weight>
执行下列命令:
sudoswift-ring-builderobject.builderaddz1-127.0.0.1:6010/device1
sudoswift-ring-builderobject.builderaddz2-127.0.0.1:6020/device1
sudoswift-ring-builderobject.builderaddz3-127.0.0.1:6030/device1
sudoswift-ring-builderobject.builderaddz4-127.0.0.1:6040/device1
sudoswift-ring-builderobject.builderrebalance
sudoswift-ring-buildercontainer.builderaddz1-127.0.0.1:6011/device1
sudoswift-ring-buildercontainer.builderaddz2-127.0.0.1:6021/device1
sudoswift-ring-buildercontainer.builderaddz3-127.0.0.1:6031/device1
sudoswift-ring-buildercontainer.builderaddz4-127.0.0.1:6041/device1
sudoswift-ring-buildercontainer.builderrebalance
sudoswift-ring-builderaccount.builderaddz1-127.0.0.1:6012/device1
sudoswift-ring-builderaccount.builderaddz2-127.0.0.1:6022/device1
sudoswift-ring-builderaccount.builderaddz3-127.0.0.1:6032/device1
sudoswift-ring-builderaccount.builderaddz4-127.0.0.1:6042/device1
sudoswift-ring-builderaccount.builderrebalance
启动Swift服务
使用以下命令启动swift和RESTAPI:
sudoswift-initmainstart
sudoswift-initreststart
测试Swift
可以通过Swift命令或Horizon提供的Web管理面板测试Swift是否正确运行。
首先,将/etc/swift目录的属主设为swift.swift:
sudochown-Rswift.swift/etc/swift
执行以下命令查看是否能得到正确的account、容器数量和存储的对象信息:
swift-v-V2.0-Ahttp://127.0.0.1:5000/v2.0/-Uservice:swift-Kswiftstat
StorageURL:http://127.0.0.1:8080/v1/AUTH_c7970080576646c6959ee35970cf3199
AuthToken:ba9df200a92d4a5088dcd6b7dcc19c0d
Account:AUTH_c7970080576646c6959ee35970cf3199
Containers:1
Objects:1
Bytes:77
Accept-Ranges:bytes
X-Trans-Id:tx11c64e218f984749bc3ec37ea46280ee
至此,Server1终于安装完毕!
三、Server2
Server2仅运行nova的运算服务。
(一)安装底层OS
安装64位Ubuntu12.04服务器。
(二)配置网络
安装网桥软件:
sudoapt-getinstallbridge-utils
编辑/etc/network/interfaces文件,如下所示:
autolo
ifaceloinetloopback
autoeth0
ifaceeth0inetstatic
address10.10.10.3
netmask255.255.255.0
broadcast10.10.10.255
gateway10.10.10.1
dns-nameservers10.10.8.3
autoeth1
ifaceeth1inetstatic
address192.168.3.2
netmask255.255.255.0
network192.168.3.0
broadcast192.168.3.255
重启网络:
sudo/etc/init.d/networkingrestart
(三)NTP客户端
安装NTP软件包:
sudoapt-getinstallntp
编辑/etc/ntp.conf文件,增加如下内容以同步至server1:
server10.10.10.2
重启NTP服务使配置生效:
sudoservicentprestart
(四)Nova组件(仅nova-compute)
安装Nova及其依赖包:
sudoapt-getinstallnova-compute
如下所示,编辑/etc/nova/nova.conf文件。该文件与Server1中的一致:
--dhcpbridge_flagfile=/etc/nova/nova.conf
--dhcpbridge=/usr/bin/nova-dhcpbridge
--logdir=/var/log/nova
--state_path=/var/lib/nova
--lock_path=/run/lock/nova
--allow_admin_api=true
--use_deprecated_auth=false
--auth_strategy=keystone
--scheduler_driver=nova.scheduler.simple.SimpleScheduler
--s3_host=10.10.10.2
--ec2_host=10.10.10.2
--rabbit_host=10.10.10.2
--cc_host=10.10.10.2
--nova_url=http://10.10.10.2:8774/v1.1/
--routing_source_ip=10.10.10.2
--glance_api_servers=10.10.10.2:9292
--image_service=nova.image.glance.GlanceImageService
--iscsi_ip_prefix=192.168.4
--sql_connection=mysql://novadbadmin:novasecret@10.10.10.2/nova
--ec2_url=http://10.10.10.2:8773/services/Cloud
--keystone_ec2_url=http://10.10.10.2:5000/v2.0/ec2tokens
--api_paste_config=/etc/nova/api-paste.ini
--libvirt_type=kvm
--libvirt_use_virtio_for_bridges=true
--start_guests_on_host_boot=true
--resume_guests_state_on_host_boot=true
#vncspecificconfiguration
--novnc_enabled=true
--novncproxy_base_url=http://10.10.10.2:6080/vnc_auto.html
--vncserver_proxyclient_address=10.10.10.2
--vncserver_listen=10.10.10.2
#networkspecificsettings
--network_manager=nova.network.manager.FlatDHCPManager
--public_interface=eth0
--flat_interface=eth1
--flat_network_bridge=br100
--fixed_range=192.168.4.1/27
--floating_range=10.10.10.2/27
--network_size=32
--flat_network_dhcp_start=192.168.4.33
--flat_injected=False
--force_dhcp_release
--iscsi_helper=tgtadm
--connection_type=libvirt
--root_helper=sudonova-rootwrap
--verbose
重新启动Server2上的nova-compute服务:
sudoservicerestartnova-compute
利用如下命令测试云中第二个运算节点(即Server2)是否正常运行:
sudonova-manageservicelist
BinaryHost Zone StatusState Updated_At
nova-networkserver1 nova enabled:-) 2012-04-2008:58:43
nova-schedulerserver1 nova enabled:-) 2012-04-2008:58:44
nova-volumeserver1 nova enabled:-) 2012-04-2008:58:44
nova-computeserver1 nova enabled:-) 2012-04-2008:58:45
nova-certserver1 nova enabled:-) 2012-04-2008:58:43
nova-computeserver2 nova enabled:-) 2012-04-2110:22:27
如果看到类似结果,则说明安装已经成功可以使用。
至此,Server2安装完毕!
三、Client1
(一)安装OS
安装64位Ubuntu12.04桌面版。
(二)配置网络
如下所示,编辑/etc/nova/nova.conf文件:
autolo
ifaceloinetloopback
autoeth0
ifaceeth0inetstatic
address10.10.10.4
netmask255.255.255.0
broadcast10.10.10.255
gateway10.10.10.1
dns-nameservers10.10.8.3
(三)NTP客户端
安装NTP软件包:
sudoapt-getinstall-yntp
编辑/etc/ntp.conf文件,增加如下内容以同步至server1:
server10.10.10.2
重启NTP服务使配置生效:
sudoservicentprestart
(四)客户端工具
如前所述,Ubuntu12.04桌面版用来制作镜像,同样它也可以使用nvoa、glance和swift命令行工具管理云。
使用下列命令安装我们需要的命令行工具:
sudoapt-getinstallpython-novaclientglance-clientswift
接着安装qemu-kvm:
sudoapt-getinstallqemu-kvm
输入环境变量,并将其添加进~/.bashrc脚本中:
exportSERVICE_TOKEN=admin
exportOS_TENANT_NAME=admin
exportOS_USERNAME=admin
exportOS_PASSWORD=admin
exportOS_AUTH_URL="http://10.10.10.2:5000/v2.0/"
exportSERVICE_ENDPOINT=http://10.10.10.2:35357/v2.0
运行nova和glance命令查看是否与OpenStack正常连接:
novalist
+--------------------------------------+------------+--------+----------------------+
|ID|Name|Status|Networks
|
+--------------------------------------+------------+--------+----------------------+
|25ee9230-6bb5-4eca-8808-e6b4e0348362|myinstance|ACTIVE|private=192.
168.4.35|
|c939cb2c-e662-46e5-bc31-453007442cf9|myinstance1|ACTIVE|private=192.
168.4.36|
+--------------------------------------+------------+--------+----------------------+
glanceindex
IDNameDiskContainerSize
FormatFormat
------------------------------------------------------------------
----------------
65b9f8e1-cde8-40e7-93e3-0866becfb9d4windowsqcow2ovf
7580745728
f147e666-990c-47e2-9caa-a5a21470cc4edebianqcow2ovf
932904960
f3a8e689-02ed-460f-a587-dc868576228fopensuseqcow2ovf
1072300032
aa362fd9-7c28-480b-845c-85a5c38ccd86centoscliqcow2ovf
1611530240
49f0ec2b-26dd-4644-adcc-2ce047e281c5ubuntuimageqcow2ovf
1471807488
(五)管理面板
打开浏览器输入Server1的IP地址,如:http://10.10.10.2,便进入管理面板的登陆页面。使用用户名“admin”和密码“admin”进行登陆来管理您刚建好的OpenStack吧。
相关推荐
ruoyi-vue-pro-vben 芋道管理后台,基于 vben 最新版本,最新的 vue3 vite4 ant-design-vue 4.0 typescript 语法进行重构开发,支持 springboot3 springcloud 版本
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值
该项目是一个基于Java语言开发的水果管理系统设计源码,包含53个文件,其中包括30个Java源文件、13个XML配置文件、6个JAR包文件、1个Git忽略文件、1个属性文件以及1个SQL脚本文件。此系统旨在用于期末答辩展示,展示了开发者对Java编程和系统设计的深入理解。
java回顾、知识整理、拾遗、面试_java-review
mysql主从复制用struts2,spring,hibernate框架,搭建在线考试系统。网站支持(1)老师创建题库,创建题目,查看题目对题目进行增删改,发布考试(选择考试难中易比例),批改学生试卷,查看学生成绩。(.zip
一个基于Go语言实现的搜索引擎项目资源
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
基于grpc开发的跨语言的交互系统,集成BCS,Brower
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
基于go语言,使用gocv和socket实现摄像头视频传输项
apache-seatunnel-web-1.0.2
内容概要:本篇文章主要介绍了如何在VMware虚拟化平台上搭建并配置QNX Neutrino实时操作系统的步骤方法。文章首先给出了获取必要的安装文件来源,然后逐步指导用户如何完成QNX在虚拟机中的安装过程以及相关网络参数配置,包括选择适当的网络模式来实现宿主机器与QNX虚拟机之间的通信,具体为设置NAT模式或者桥接模式下的网络参数,如指定静态或动态获取IP地址的方法。 适用人群:对嵌入式开发感兴趣的技术人士,尤其是需要在Linux环境下开展工作的程序员和系统工程师。 使用场景及目标:通过详细的操作指南帮助初学者快速掌握在Windows或Linux主机上利用虚拟机搭建QNX Real-Time Operating System开发环境的基础技能,能够实现在该环境中运行简单的C/C++应用程序。 其他说明:本文不仅适用于QNX初学者作为入门引导资料,也为经验丰富的开发者提供了有关于特定环境配置的重要参考。由于涉及到的具体细节比较多,读者最好边操作边对照文章内容进行练习。同时要注意保持最新版本的虚拟化平台客户端和服务端程序以确保兼容性和稳定性。
stm32中dma结合ad的使用
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值
低全球变暖潜能值 (GWP) 制冷剂.docx
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
ubuntu