ubuntu 12.04 LTS 单网卡多节点搭建openstack

一.安装底层OS

12.04的UbuntuOS安装完毕后 ,使用下列命令安装ssh并更新系统:

sudo apt-get install ssh

sudo apt-get update

sudo apt-get upgrade

安装网桥工具bridge-utils

sudo apt-get install bridge-utils

二.配置网络

1) 编辑/etc/network/interfaces文件,如下所示:

auto lo

iface lo inet loopback

auto eth0

iface eth0 inet static

address 192.168.8.44

netmask 255.255.255.0

broadcast 192.168.8.255

gateway 192.168.8.254

dns-nameservers 202.120.2.101

注:根据自己所在网络修改上述参数,保证静态IP(static)即可。
2)重启网络:

sudo /etc/init.d/networking restart

三.NTP服务器

安装NTP软件包。这个时间服务器将为所有节点提供支持。OpenStack所有组件的时间都必须同步,于是我们就在Server1上安装NTP服务并且让其他服务器或节点与之保持同步。

sudo apt-get install ntp

译者注:NTPNetwork Time Protocol),是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。[来源:百度百科]

打开文件/etc/ntp.conf增加以下三行内容,目的是让本服务器时间与外部服务器时间同步。如果不能访问外网,NTP服务器将使用本机硬件时钟作为第二选择。

server ntp.ubuntu.com

server 127.127.1.0

fudge 127.127.1.0 stratum 10

然后重启NTP使配置生效:

sudo service ntp restart

请确保服务器IP地址可以被DNS解析。如果不能,则在/etc/hosts文件中手工加入。


四.安装数据库

安装mysql-serverpython-mysqldb包:

sudo apt-get install mysql-server python-mysqldb

mysql创建root密码,在此使用"123456”。随后编辑mysql配置文件/etc/mysql/my.cnf,将绑定地址从127.0.0.1改为0.0.0.0,如下所示:

bind-address = 0.0.0.0

重启MySQL服务器让其开始监听所有端口:

sudo restart mysql

创建数据库

我们将要为novaglancekeystone创建很多东东,各种数据库、表及用户。话音未落,这就开始了:

创建名为“nova”的数据库:

sudo mysql -uroot -p123456 -e 'CREATE DATABASE nova;'(mysql每句语句结束需要用”;“)

新建一个用户,名为“novadbadmin”:

sudo mysql -uroot -p123456 -e 'CREATE USER novadbadmin;'

授予novadbadmin用户nova数据库全部权限:

sudo mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'%';"

(%代表任何非本地主机,localhost代表本机)

sudo mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'localhost';"

novadbadmin同志创建密码(译者注:密码是nova,后文类似之处不多言,请详见命令):

sudo mysql -uroot -p123456 -e "SET PASSWORD FOR 'novadbadmin'@'%' = PASSWORD('nova');"

sudo mysql -uroot -p123456 -e "SET PASSWORD FOR 'novadbadmin'@'localhost' = PASSWORD('nova');

Glance登场,还是重复刚才的道道,首先创建一个名为glance的数据库:

sudo mysql -uroot -p123456 -e 'CREATE DATABASE glance;'

然后为这个新建的数据库添加一个用户“glancedbadmin”:

sudo mysql -uroot -p123456 -e 'CREATE USER glancedbadmin;'

接着,光荣授予他本数据库的全部权限:

sudo mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'%';"

sudo mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'localhost';"

是的,最后一步,为该用户分配密码:

sudo mysql -uroot -p123456 -e "SET PASSWORD FOR 'glancedbadmin'@'%' = PASSWORD('glance');"

sudo mysql -uroot -p123456 -e "SET PASSWORD FOR 'glancedbadmin'@'localhost' = PASSWORD('glance');"

很烦的,keystone出场了。刚才的大循环,至此开始演绎第三遍:

sudo mysql -uroot -p123456 -e 'CREATE DATABASE keystone;'

sudo mysql -uroot -p123456 -e 'CREATE USER keystonedbadmin;'

sudo mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystonedbadmin'@'%';"

sudo mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystonedbadmin'@'localhost';"

sudo mysql -uroot -p123456 -e "SET PASSWORD FOR 'keystonedbadmin'@'%' = PASSWORD('keystone')"

sudo mysql -uroot -p123456 -e "SET PASSWORD FOR 'keystonedbadmin'@'localhost' = PASSWORD('keystone')"

现在,MySQL部分的工作结束。

五.keystone

KeystoneOpenStack的认证服务。使用以下命令进行安装:

sudo apt-get install keystone python-keystone python-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:keystone@192.168.8.44/keystone

然后,重启Keystone

sudo service keystone restart

接着,执行以下命令同步数据库:

sudo keystone-manage db_sync

Q:sqlalchemy.exc.OperationalError: (OperationalError) (2003, "Can't connect to MySQL server on '192.16…….

S: the service mysql may not be opened

service mysql restart

最后,有些环境变量是OpenStack运行所必须的:

export SERVICE_ENDPOINT="http://localhost:35357/v2.0"

export SERVICE_TOKEN=admin

当然为了避免下次系统重启后,还得将这些变量再次export,最稳妥的办法就是将其写入~/.bashrc中。

创建租间

使用以下命令创建两个租间,adminservice

keystone tenant-create –name admin

keystone tenant-create –name service

Q: Expecting authentication method via either a service token, –token or env[SERVICE_TOKEN], or …..

S:

export SERVICE_ENDPOINT="http://localhost:35357/v2.0"

export SERVICE_TOKEN=admin

创建用户

执行以下命令,创建四个用户adminnovaglanceswift

keystone user-create –name admin –pass admin –email admin@foobar.com

keystone user-create –name nova –pass nova –email nova@foobar.com

keystone user-create –name glance –pass glance –email glance@foobar.com

keystone user-create –name swift –pass swift –email swift@foobar.com

创建角色

使用命令创建两个角色,adminMember译者注:注意是大写M):

keystone role-create –name admin

keystone role-create –name Member

查看租间、用户和角色

刚才建立的租间、用户和角色可以通过如下命令进行查看:

租间列表:

keystone tenant-list

+———————————-+——————–+———+

| id | name | enabled |

+———————————-+——————–+———+

| 7f95ae9617cd496888bc412efdceabfd | admin | True |

| c7970080576646c6959ee35970cf3199 | service | True |

+———————————-+——————–+———+

用户列表:

keystone user-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 |

+———————————-+———+——————-+——–+

角色列表:

keystone role-list

+———————————-+———————-+

| id | name |

+———————————-+———————-+

| 2bbe305ad531434991d4281aaaebb700 | admin |

| d983800dd6d54ee3a1b1eb9f2ae3291f | Member |

+———————————-+———————-+

请大家格外注意id列中的值,虽然很长,但随后为用户绑定角色,继而把用户配入租间中时可全靠它们了。

为特定租间中的用户绑定角色

现在我们先为刚刚创建的用户绑定角色,通过如下命令格式可以将特定租间中的特定用户增加角色(译者注:仅是命令格式,随后才是真正执行的命令):

keystone user-role-add –user $USER_ID –role $ROLE_ID –tenant_id $TENANT_ID

其中id字段可以通过keystone user-listkeystone role-listkeystone tenant-list命令获得。

下面开始为“admin”租间中的“admin”用户绑定“admin”角色:

keystone user-role-add –user b3de3aeec2544f0f90b9cbfe8b8b7acd –role 2bbe305ad531434991d4281aaaebb700 –tenant_id 7f95ae9617cd496888bc412efdceabfd

接着执行如下命令,为“service”租间中的“nova”、“glance”、“swift”用户绑定“admin”角色:

keystone user-role-add –user ce8cd56ca8824f5d845ba6ed015e9494 –role 2bbe305ad531434991d4281aaaebb700 –tenant_id c7970080576646c6959ee35970cf3199

keystone user-role-add –user 518b51ea133c4facadae42c328d6b77b –role 2bbe305ad531434991d4281aaaebb700 –tenant_id c7970080576646c6959ee35970cf3199

keystone user-role-add –user 1b986cca67e242f38cd6aa4bdec587ca –role 2bbe305ad531434991d4281aaaebb700 –tenant_id c7970080576646c6959ee35970cf3199

为"admin"租间里的"swift"用户绑定“Member”角色即可,所以相应地执行如下命令:

keystone user-role-add –user 1b986cca67e242f38cd6aa4bdec587ca –role d983800dd6d54ee3a1b1eb9f2ae3291f –tenant_id 7f95ae9617cd496888bc412efdceabfd

注意,在执行自己的安装时,请千万按照实际安装中的id进行设置,照抄本文id必将出错!

创建服务

至此,我们该创建授权用户可以享用的服务了,命令格式如下:

keystone service-create –name service_name –type service_type –description 'Description of the service'

安装上述格式,创建nova-computenova-volumeglanceswiftkeystoneec2服务:

keystone service-create –name nova –type compute –description 'OpenStack Compute Service'

keystone service-create –name volume –type volume –description 'OpenStack Volume Service'

keystone service-create –name glance –type image –description 'OpenStack Image Service'

keystone service-create –name swift –type object-store –description 'OpenStack Storage Service'

keystone service-create –name keystone –type identity –description 'OpenStack Identity Service'

keystone service-create –name ec2 –type ec2 –description 'EC2 Service'

刚才创建的每个服务都拥有唯一的id,要查看服务id,使用如下命令即可:

keystone service-list

+———————————-+———-+————–+—————————-+

| id | name | type | description |

+———————————-+———-+————–+—————————-+

| 1e93ee6c70f8468c88a5cb1b106753f3 | nova | compute | OpenStack Compute Service |

| 28fd92ffe3824004996a3e04e059d875 | ec2 | ec2 | EC2 Service |

| 7d4ec192dfa1456996f0f4c47415c7a7 | keystone | identity | OpenStack Identity Service |

| 96f35e1112b143e59d5cd5d0e6a8b22d | swift | object-store | OpenStack Storage Service |

| f38f4564ff7b4e43a52b2f5c1b75e5fa | volume | volume | OpenStack Volume Service |

+———————————-+———-+————–+—————————-+

这些id将被用于定义所属服务的入口(endpoint)。

创建入口

创建服务入口的命令格式是:

keystone endpoint-create –region region_name –service_id service_id –publicurl public_url –adminurl admin_url –internalurl internal_url

使用如下命令创建nova-compute入口:

keystone endpoint-create –region myregion –service_id 1e93ee6c70f8468c88a5cb1b106753f3 –publicurl 'http://192.168.8.44:8774/v2/$(tenant_id)s' –adminurl 'http://192.168.8.44:8774/v2/$(tenant_id)s' –internalurl 'http://192.168.8.44:8774/v2/$(tenant_id)s'

使用如下命令创建nova-volume入口:

keystone endpoint-create –region myregion –service_id f38f4564ff7b4e43a52b2f5c1b75e5fa –publicurl 'http://192.168.8.44:8776/v1/$(tenant_id)s' –adminurl 'http://192.168.8.44:8776/v1/$(tenant_id)s' –internalurl 'http://192.168.8.44:8776/v1/$(tenant_id)s'

使用如下命令创建glance入口:

keystone endpoint-create –region myregion –service_id fbafab6edcab467bb734380ce6be3561 –publicurl 'http://192.168.8.44:9292/v1' –adminurl 'http://192.168.8.44:9292/v1' –internalurl 'http://192.168.8.44:9292/v1'

使用如下命令创建swift入口:

keystone endpoint-create –region myregion –service_id 96f35e1112b143e59d5cd5d0e6a8b22d –publicurl 'http://192.168.8.44/v1/AUTH_$(tenant_id)s' –adminurl 'http://192.168.8.44:8080/v1' –internalurl 'http://192.168.8.44:8080/v1/AUTH_$(tenant_id)s'

使用如下命令创建keystone入口:

keystone endpoint-create –region myregion –service_id 7d4ec192dfa1456996f0f4c47415c7a7 –publicurl http://192.168.8.44:5000/v2.0 –adminurl http://192.168.8.44:35357/v2.0 –internalurl http://192.168.8.44:5000/v2.0

使用如下命令创建ec2入口:

keystone endpoint-create –region myregion –service_id 28fd92ffe3824004996a3e04e059d875 –publicurl http://192.168.8.44:8773/services/Cloud –adminurl http://192.168.8.44:8773/services/Admin –internalurl http://192.168.8.44:8773/services/Cloud

六.Glance

使用以下命令安装glance

sudo apt-get install glance glance-api glance-client glance-common glance-

registry python-glance

配置Glance服务

Glance默认使用SQLiteMySQLPostgreSQL也可以很好地与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:glance@192.168.8.44/glance

紧接着还是这份文件,在底部增加如下设置,目的是让glance使用keystone授权:

[paste_deploy]

flavor = keystone

打开 /etc/glance/glance-api.conf文件,在文件末尾增加如下配置:

[paste_deploy]

flavor = keystone

MySQL数据库中创建glance schema,进行同步:

sudo glance-manage version_control 0

sudo glance-manage db_sync

上述改动全部完成后,重启glance-apiglance-registry服务:

sudo restart glance-api

sudo restart glance-registry

设置如下环境变量,你也可以将其写入 ~/.bashrc中:

export SERVICE_TOKEN=admin

export OS_TENANT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=admin

export OS_AUTH_URL="http://localhost:5000/v2.0/"

export SERVICE_ENDPOINT=http://localhost:35357/v2.0

现在我们可以使用这个命令来测试glance是否正确安装:

glance index

Q:Failed to show index. Got error:

You are not authenticated.

Details: 401 Unauthorized

This server could not verify that you are authorized to access the document you requested. Either you supplied the wrong credentials (e.g., bad password), or your browser does not understand how to supply the credentials required.

Authentication required

S:

run the export phases above

如果这条命令没有返回任何结果,则说明glance已经正确安装完毕,并与Keystone正常通信。若是稍微探究一下的话,上述命令其实有返回值,正确安装情况下的返回值是0,可以使用echo $?进行查看。

Glance正确配置且使用keystone作为授权机制后,我们便可以上传镜像到glance了,相关内容详见后文中的“镜像管理(Image Management)”。

七.Nova

先使用如下命令安装nova及其相关组件:

sudo apt-get install nova-api nova-cert nova-compute nova-compute-kvm nova-doc nova-network nova-objectstore nova-scheduler nova-volume rabbitmq-server novnc nova-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=192.168.8.44

–ec2_host=192.168.8.44

–rabbit_host=192.168.8.44

–cc_host=192.168.8.44

–nova_url=http://192.168.8.44:8774/v1.1/

–routing_source_ip=192.168.8.44

–glance_api_servers=192.168.8.44:9292

–image_service=nova.image.glance.GlanceImageService

–iscsi_ip_prefix=192.168.4

–sql_connection=mysql://novadbadmin:nova@192.168.8.44/nova

–ec2_url=http://192.168.8.44:8773/services/Cloud

–keystone_ec2_url=http://192.168.8.44: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

# vnc specific configuration

–novnc_enabled=true

–novncproxy_base_url=http://192.168.8.44:60

–vncserver_proxyclient_address=192.168.8.44

–vncserver_listen= 192.168.8.44

# network specific settings

–network_manager=nova.network.manager.FlatDHCPManager

–public_interface=eth0

–flat_interface=eth0;只有一个网卡,该为eth0

–flat_network_bridge=br100

–fixed_range=192.168.4.1/27

–floating_range=192.168.8.44/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=sudo nova-rootwrap

–verbose

创建一个物理卷:

sudo pvcreate /dev/sda6

创建一个名为“nova-volumnes”的卷组:

sudo vgcreate nova-volumes /dev/sda6

修改 /etc/nova文件夹的属主及 /etc/nova/nova.conf文件的访问权限:

sudo chown -R nova:nova /etc/nova

sudo chmod 644 /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数据库进行同步:

sudo nova-manage db sync

可能输出:

2012-07-04 17:49:29 DEBUG nova.utils [-] backend from (pid=1302) __get_backend /usr/lib/python2.7/dist-packages/nova/utils.py:658

2012-07-04 17:50:46 WARNING nova.utils [-] /usr/lib/python2.7/dist-packages/sqlalchemy/pool.py:639: SADeprecationWarning: The 'listeners' argument to Pool (and create_engine()) is deprecated. Use event.listen().

Pool.__init__(self, creator, **kw)

2012-07-04 17:50:46 WARNING nova.utils [-] /usr/lib/python2.7/dist-packages/sqlalchemy/pool.py:145: SADeprecationWarning: Pool.add_listener is deprecated. Use event.listen()

self.add_listener(l)

2012-07-04 17:50:46 AUDIT nova.db.sqlalchemy.fix_dns_domains [-] Applying database fix for Es*** dns_domains table.

为实例提供IP池:

sudo nova-manage network create private –fixed_range_v4=192.168.4.32/27 –num_networks=1 –bridge=br100 –bridge_interface=eth0 –network_size=32

输出环境变量:

export OS_TENANT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=admin

export OS_AUTH_URL="http://localhost:5000/v2.0/"

重启nova服务:

sudo restart libvirt-bin; sudo restart nova-network; sudo restart nova-compute; sudo restart nova-api; sudo restart nova-objectstore; sudo restart nova-scheduler; sudo restart nova-volume; sudo restart nova-consoleauth;

执行下列命令测试nova是否正确安装:

sudo nova-manage service list

2012-07-04 17:53:20 DEBUG nova.utils [req-054484fc-ba70-494a-b932-b1760592096b None None] backend from (pid=1683) __get_backend /usr/lib/python2.7/dist-packages/nova/utils.py:658

Binary Host Zone Status State Updated_At

nova-consoleauth server1 nova enabled :-) 2012-07-04 09:53:16

nova-compute server1 nova enabled :-) 2012-07-04 09:53:10

nova-scheduler server1 nova enabled :-) 2012-07-04 09:53:17

nova-network server1 nova enabled :-) 2012-07-04 09:53:17

若所有组件都是微笑,说明nova已经正确安装完毕。


八.openstack管理面板

执行下列命令安装管理面板:

sudo apt-get install openstack-dashboard

重启Apache

sudo service apache2 restart

好消息,现在打开浏览器输入server1IP地址,就可以看到OpenStack的管理面板登陆界面了。默认用户名和密码都是“admin”。在管理面板中,可以进行创建密匙对,创建、编辑安全群组,新建实例,添加卷等操作。具体内容详见后文“OpenStack Dashboard”章节。

九.安装swift

安装Swift

最重要的部分是swift的代理、账户、容器及对象服务器:

sudo apt-get install swift swift-proxy swift-account swift-container swift-object

随后安装一些支持组件,xfsprogs(支持XFS文件系统)、python.pastedeploy(访问keystone)和curl(测试swift):

sudo apt-get install xfsprogs curl python-pastedeploy

Swift存储端

有两种方法来创建或制备存储端,一种是采用现有的分区或卷作为存储设备,另一种是创建环回文件(Loopback file)并将当做存储设备。安装时,两种方式自选。

1. 分区作为存储设备

如果在安装OS时为Swift预留了一个分区,你就可以直接使用它。如果该分区没有使用过或仍是空闲空间(比如 /dev/sdb3),就应该把它格式化为xfs文件系统,接着编辑 /etc/fstab中该分区的挂载点(注意:请根据实际情况选择你自定的设备,本教程假定手头未使用也没分区的空闲空间在 /dev/sdb上):

sudo fdisk /dev/sdb

Type n for new partition

Type e for extended partion

Choose appropriate partition number ( or go with the default )

Choose first and last sectors to set the hard disk size (or go with defaults)

Note that 83 is the partition type number for Linux

Type w to write changes to the disk

上述命令将创建一个譬如 /dev/sdb3的分区,接着我们便将其格式化为XFS。记得格式化前要先使用命令“sudo fdisk -l”查看当前分区表,确定系统列出的分区含有你即将格式化的目标分区。最后,如果刚才xfsprogs成功安装的话,我们才能够使用以下命令:

sudo mkfs.xfs -i size=1024 /dev/sdb3

创建一个该分区的挂载点,并命名为“swift_backend”:

sudo mkdir /mnt/swift_backend

紧接着编辑 /etc/fstab文件写入如下内容以便系统启动时自动加载这个分区:

2. 环回文件作为存储设备

创建一个空文件作为Swift存储的环回设备,在这里我们使用disk copy命令创建它并命名为swift-disk,还将为其分配1G的磁盘空间。如果空间不够,可以通过改变seek值来增加空间。随后格式化为XFS

sudo dd if=/dev/zero of=/srv/swift-disk bs=1024 count=0 seek=1000000

sudo mkfs.xfs -i size=1024 /srv/swift-disk

file /srv/swift-disk

swift-disk1: SGI XFS filesystem data (blksz 4096, inosz 1024, v2 dirs)

创建挂载点:

sudo mkdir /mnt/swift_backend

写入 /etc/fstab

/srv/swift-disk /mnt/swift_backend xfs loop,noatime,nodiratime,nobarrier,logbufs=8 0 0

3. 使用存储

挂载存储分区前,需要创建一些设备节点并设置其属主和主群为“Swift”:

sudo mount /mnt/swift_backend

pushd /mnt/swift_backend

sudo mkdir node1 node2 node3 node4

popd

sudo chown swift.swift /mnt/swift_backend/*

for i in {1..4}; do sudo ln -s /mnt/swift_backend/node$i /srv/node$i; done;

sudo mkdir -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

sudo mkdir /run/swift

sudo chown -L -R swift.swift /etc/swift /srv/node[1-4]/ /run/swift

为了在系统启动时启动Swift服务,需要把如下两行命令写入 /etc/rc.local里,位置在“exit 0;”之前:

sudo mkdir /run/swift

sudo chown swift:swift /run/swift

配置远程备份

Rsync用来维护对象副本,许多swift服务都使用它保持对象一致性及进行更新操作。所有存储节点都将享用此配置:

首先编辑 /etc/default/rsync文件:

Set RSYNC_ENABLE=true

然后编辑 /etc/rsyncd.conf配置文件,如下所示:

# General stuff

uid = swift

gid = swift

log file = /var/log/rsyncd.log

pid file = /run/rsyncd.pid

address = 127.0.0.1

# Account Server replication settings

[account6012]

max connections = 25

path = /srv/node1/

read only = false

lock file = /run/lock/account6012.lock

[account6022]

max connections = 25

path = /srv/node2/

read only = false

lock file = /run/lock/account6022.lock

[account6032]

max connections = 25

path = /srv/node3/

read only = false

lock file = /run/lock/account6032.lock

[account6042]

max connections = 25

path = /srv/node4/

read only = false

lock file = /run/lock/account6042.lock

# Container server replication settings

[container6011]

max connections = 25

path = /srv/node1/

read only = false

lock file = /run/lock/container6011.lock

[container6021]

max connections = 25

path = /srv/node2/

read only = false

lock file = /run/lock/container6021.lock

[container6031]

max connections = 25

path = /srv/node3/

read only = false

lock file = /run/lock/container6031.lock

[container6041]

max connections = 25

path = /srv/node4/

read only = false

lock file = /run/lock/container6041.lock

# Object Server replication settings

[object6010]

max connections = 25

path = /srv/node1/

read only = false

lock file = /run/lock/object6010.lock

[object6020]

max connections = 25

path = /srv/node2/

read only = false

lock file = /run/lock/object6020.lock

[object6030]

max connections = 25

path = /srv/node3/

read only = false

lock file = /run/lock/object6030.lock

[object6040]

max connections = 25

path = /srv/node4/

read only = false

lock file = /run/lock/object6040.lock

最后重新启动服务完成rsync配置:

sudo service rsync restart

创建并编辑 /etc/swift/swift.conf文件,并写入如下配置:

[swift-hash]

# random unique string that can never change (DO NOT LOSE). I'm using 03c9f48da2229770.

# od -t x8 -N 8 -A n < /dev/random

# The above command can be used to generate random a string.

swift_hash_path_suffix = 03c9f48da2229770

特别的,当建立更多的节点时,你需要记住随机串。不要照抄本例,请通过以下命令生成自己的随机字符串:

od -t x8 -N 8 -A n < /dev/random

原文链接:https://blog.csdn.net/tangximing123/article/details/39896917

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/7096

(0)
上一篇 2022年10月17日
下一篇 2022年10月17日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml