OpenStack組件Swift單機(jī)搭建(基于Keystone)(轉(zhuǎn))


安裝環(huán)境:Ubuntu 16.04

需要有兩塊硬盤(一塊為系統(tǒng)盤盐捷,一塊用于安裝SWIFT)

需要有IP地址


環(huán)境準(zhǔn)備

  • 修改hosts文件
  • 安裝相關(guān)服務(wù)

修改hosts

編輯 /etc/hosts彭沼,添加

IP地址 controller

安裝Openstack源并更新和安裝

apt install software-properties-common
add-apt-repository cloud-archive:newton
apt update && apt dist-upgrade

安裝完成后重啟

安裝Openstack客戶端

apt install python-openstackclient

安裝數(shù)據(jù)庫

1佛纫、安裝數(shù)據(jù)庫服務(wù)

apt install mariadb-server python-pymysql

2脑漫、創(chuàng)建或修改/etc/mysql/mariadb.conf.d/99-openstack.cnf文件

(若文件存在則修改街望,不存在則創(chuàng)建飞蚓,存在的文件中若未提及的選項(xiàng)則保持不變,下同)

[mysqld]
bind-address = 你的IP地址

default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8

3鼠冕、將/etc/mysql/mariadb.conf.d/下所有的文件中所有utf8mb4改為utf8
4添寺、進(jìn)入數(shù)據(jù)庫,設(shè)置root密碼懈费,添加遠(yuǎn)程登錄權(quán)限

# mysql -u root
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' \
  IDENTIFIED BY 'root密碼';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' \
  IDENTIFIED BY 'root密碼';
mysql> flush privileges;
mysql> exit;

5计露、重啟數(shù)據(jù)庫

 service mysql restart

安裝消息隊(duì)列服務(wù)(Message Queue)

1、安裝服務(wù)

apt install rabbitmq-server

2憎乙、添加openstack用戶并添加權(quán)限

rabbitmqctl add_user openstack 設(shè)置一個(gè)密碼
rabbitmqctl set_permissions openstack ".*" ".*" ".*"

安裝分布式緩存服務(wù)(Memcached)

1票罐、安裝服務(wù)

apt install memcached python-memcache

2、修改配置文件/etc/memcached.conf

-l 你的IP地址

3泞边、重啟服務(wù)

service memcached restart

安裝配置Keystone胶坠,并添加域、項(xiàng)目繁堡、用戶和角色

準(zhǔn)備

1、添加Keystone數(shù)據(jù)庫和相關(guān)用戶

# mysql -u root -p
Create the keystone database:
mysql> CREATE DATABASE keystone;
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
  IDENTIFIED BY 'Keystone密碼';
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
  IDENTIFIED BY 'Keystone密碼';

2乡数、安裝服務(wù)

apt install keystone

配置Keystone

1椭蹄、編輯/etc/keystone/keystone.conf

[database]
connection = mysql+pymysql://keystone:'keystone用戶的密碼'@controller/keystone
[token]
provider = fernet

2、填充keystone數(shù)據(jù)庫
啟動mariadb遠(yuǎn)程訪問

sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/mariadb.conf.d/50-server.cnf
su -s /bin/sh -c "keystone-manage db_sync" keystone

3净赴、初始化Fernet key repositories(似乎是個(gè)專有名詞不知道咋翻譯)

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

4绳矩、對認(rèn)證服務(wù)進(jìn)行引導(dǎo)

keystone-manage bootstrap --bootstrap-password 設(shè)置一個(gè)admin密碼 \
  --bootstrap-admin-url http://controller:35357/v3/ \
  --bootstrap-internal-url http://controller:35357/v3/ \
  --bootstrap-public-url http://controller:5000/v3/ \
  --bootstrap-region-id RegionOne

配置Apache HTTP服務(wù)

1、編輯/etc/apache2/apache2.conf

ServerName controller

2玖翅、重啟apache服務(wù)翼馆,并且刪除SQLite數(shù)據(jù)庫

service apache2 restart
rm -f /var/lib/keystone/keystone.db

3、添加一些環(huán)境變量(臨時(shí)的哦)

export OS_USERNAME=admin
export OS_PASSWORD=這里寫你剛才設(shè)置的admin的密碼
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_DOMAIN_NAME=default
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3

創(chuàng)建域金度、項(xiàng)目应媚、用戶和角色

1、創(chuàng)建一個(gè)service項(xiàng)目

openstack project create --domain default \
  --description "Service Project" service

2猜极、創(chuàng)建一個(gè)demo項(xiàng)目和user
創(chuàng)建demo用戶

openstack project create --domain default \
  --description "Demo Project" demo
openstack user create --domain default \
  --password-prompt demo(輸入此句后會需要設(shè)置demo的密碼)

創(chuàng)建user角色

openstack role create user

添加user角色到demo項(xiàng)目和用戶中

openstack role add --project demo --user demo user

驗(yàn)證操作

1中姜、基于安全的考慮在/etc/keystone/keystone-paste.ini中移除

[pipeline:public_api], [pipeline:admin_api],[pipeline:api_v3] 中的admin_token_auth

2、移除掉一些環(huán)境變量

unset OS_AUTH_URL OS_PASSWORD

3跟伏、以admin用戶的身份請求一個(gè)認(rèn)證令牌

openstack --os-auth-url http://controller:35357/v3 \
  --os-project-domain-name default --os-user-domain-name default \
  --os-project-name admin --os-username admin token issue
(會要求輸入admin的密碼)

如果出現(xiàn)類似于以下的信息則表示成功

+------------+-----------------------------------------------------------------+
| Field      | Value                                                           |
+------------+-----------------------------------------------------------------+
| expires    | 2016-02-12T20:14:07.056119Z                                     |
| id         | gAAAAABWvi7_B8kKQD9wdXac8MoZiQldmjEO643d-e_j-XXq9AmIegIbA7UHGPv |
|            | atnN21qtOMjCFWX7BReJEQnVOAj3nclRQgAYRsfSU_MrsuWb4EDtnjU7HEpoBb4 |
|            | o6ozsA_NmFWEpLeKy0uNn_WeKbAhYygrsmQGA49dclHVnz-OMVLiyM9ws       |
| project_id | 343d245e850143a096806dfaefa9afdc                                |
| user_id    | ac3377633149401296f6c0d92d79dc16                                |
+------------+-----------------------------------------------------------------+

3丢胚、以demo用戶的身份請求一個(gè)認(rèn)證令牌

openstack --os-auth-url http://controller:5000/v3 \
  --os-project-domain-name default --os-user-domain-name default \
  --os-project-name demo --os-username demo token issue
(會要求輸入demo的密碼)

如果出現(xiàn)類似于以下的信息則表示成功

+------------+-----------------------------------------------------------------+
| Field      | Value                                                           |
+------------+-----------------------------------------------------------------+
| expires    | 2016-02-12T20:14:07.056119Z                                     |
| id         | gAAAAABWvi7_B8kKQD9wdXac8MoZiQldmjEO643d-e_j-XXq9AmIegIbA7UHGPv |
|            | atnN21qtOMjCFWX7BReJEQnVOAj3nclRQgAYRsfSU_MrsuWb4EDtnjU7HEpoBb4 |
|            | o6ozsA_NmFWEpLeKy0uNn_WeKbAhYygrsmQGA49dclHVnz-OMVLiyM9ws       |
| project_id | 343d245e850143a096806dfaefa9afdc                                |
| user_id    | ac3377633149401296f6c0d92d79dc16                                |
+------------+-----------------------------------------------------------------+

寫♂腳♂本

由于環(huán)境變量會失效(除非你設(shè)置在bashrc里面去了翩瓜,不過這不利于更換用戶身份)為了方便,可以創(chuàng)建一些腳本
1、創(chuàng)建admin-openrc文件

export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=你的admin密碼
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

2携龟、創(chuàng)建demo-openrc文件

export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=你的demo密碼
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

3兔跌、驗(yàn)證一下

source admin-openrc
openstack token issue

如果出現(xiàn)類似于以下的信息則表示成功

+------------+-----------------------------------------------------------------+
| Field      | Value                                                           |
+------------+-----------------------------------------------------------------+
| expires    | 2016-02-12T20:14:07.056119Z                                     |
| id         | gAAAAABWvi7_B8kKQD9wdXac8MoZiQldmjEO643d-e_j-XXq9AmIegIbA7UHGPv |
|            | atnN21qtOMjCFWX7BReJEQnVOAj3nclRQgAYRsfSU_MrsuWb4EDtnjU7HEpoBb4 |
|            | o6ozsA_NmFWEpLeKy0uNn_WeKbAhYygrsmQGA49dclHVnz-OMVLiyM9ws       |
| project_id | 343d245e850143a096806dfaefa9afdc                                |
| user_id    | ac3377633149401296f6c0d92d79dc16                                |
+------------+-----------------------------------------------------------------+

安裝并配置Swift服務(wù)

環(huán)境準(zhǔn)備

1、運(yùn)行腳本

source admin-openrc

2峡蟋、向Keystone添加swift相關(guān)信息

添加swift用戶

openstack user create --domain default --password-prompt swift(此處要設(shè)置密碼)

將admin角色加入到swift用戶中

openstack role add --project service --user swift admin

添加swift服務(wù)實(shí)體

openstack service create --name swift \
  --description "OpenStack Object Storage" object-store

添加對象存儲服務(wù)API的端點(diǎn)(endpoints)

openstack endpoint create --region RegionOne \
  object-store public http://controller:8080/v1/AUTH_%\(tenant_id\)s


openstack endpoint create --region RegionOne \
  object-store internal http://controller:8080/v1/AUTH_%\(tenant_id\)s


openstack endpoint create --region RegionOne \
  object-store admin http://controller:8080/v1

3坟桅、安裝相關(guān)服務(wù)

apt install swift swift-proxy python-swiftclient \
  python-keystoneclient python-keystonemiddleware \
  memcached \
  swift swift-account swift-container swift-object

配置proxy服務(wù)

1、創(chuàng)建并進(jìn)入/etc/swift文件夾
2层亿、下載proxy-server.conf

curl -o /etc/swift/proxy-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/proxy-server.conf-sample?h=stable/newton

3桦卒、編輯proxy-server.conf

[DEFAULT]
bind_port = 8080
user = swift
swift_dir = /etc/swift

[pipeline:main]
pipeline = catch_errors gatekeeper healthcheck proxy-logging cache container_sync bulk ratelimit authtoken keystoneauth container-quotas account-quotas slo dlo versioned_writes proxy-logging proxy-server
[app:proxy-server]
use = egg:swift#proxy
account_autocreate = True

[filter:keystoneauth]
use = egg:swift#keystoneauth
operator_roles = admin,user

[filter:authtoken]
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = swift
password = 你設(shè)置的swift密碼
delay_auth_decision = True

[filter:cache]
use = egg:swift#memcache
memcache_servers = controller:11211

配置存儲相關(guān)服務(wù)

1、安裝服務(wù)

apt install xfsprogs rsync

2匿又、格式化硬盤為XFS格式

(如果不知道硬盤名方灾,可使用fdisk -l查看)

mkfs.xfs /dev/硬盤

3、創(chuàng)建掛載節(jié)點(diǎn)的文件目錄

mkdir -p /srv/node/硬盤

4碌更、在/etc/fstab中添加

/dev/硬盤 /srv/node/硬盤 xfs noatime,nodiratime,nobarrier,logbufs=8 0 2

5裕偿、掛載硬盤

mount /srv/node/硬盤

6、創(chuàng)建并編輯文件 /etc/rsyncd.conf

mkdir /etc/rsyncd.conf
uid = swift
gid = swift
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
address = 你的IP

[account]
max connections = 2
path = /srv/node/
read only = False
lock file = /var/lock/account.lock

[container]
max connections = 2
path = /srv/node/
read only = False
lock file = /var/lock/container.lock

[object]
max connections = 2
path = /srv/node/
read only = False
lock file = /var/lock/object.lock

7痛单、編輯/etc/default/rsync

RSYNC_ENABLE=true

8嘿棘、啟動rsync服務(wù)

service rsync start

9、下載配置文件

curl -o /etc/swift/account-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/account-server.conf-sample?h=stable/newton
curl -o /etc/swift/container-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/container-server.conf-sample?h=stable/newton
curl -o /etc/swift/object-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/object-server.conf-sample?h=stable/newton

10旭绒、編輯/etc/swift/account-server.conf

[DEFAULT]
bind_ip = 你的IP
bind_port = 6002
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = True
[pipeline:main]
pipeline = healthcheck recon account-server
[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift

11鸟妙、編輯/etc/swift/container-server.conf

[DEFAULT]
bind_ip = 你的IP
bind_port = 6001(2.conf為6011)
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = True
[pipeline:main]
pipeline = healthcheck recon container-server
[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift

12、編輯/etc/swift/object-server.conf

[DEFAULT]
bind_ip = 你的IP
bind_port = 6000
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = True
[pipeline:main]
pipeline = healthcheck recon object-server
[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift
recon_lock_path = /var/lock

13挥吵、修改權(quán)限

chown -R swift:swift /srv/node/*
mkdir -p /var/cache/swift/1 /var/cache/swift/2
chown -R root:swift /var/cache/swift/*
chmod -R 775 /var/cache/swift/*

創(chuàng)建并分配初始化環(huán)

1重父、在/etc/swift中執(zhí)行以下命令

swift-ring-builder account.builder create 10 1 1

swift-ring-builder account.builder add \
  --region 1 --zone 1 --ip 你的IP地址 --port 6002 --device 你的硬盤 --weight 100

swift-ring-builder account.builder rebalance

swift-ring-builder container.builder create 10 1 1

swift-ring-builder container.builder add \
  --region 1 --zone 1 --ip 你的IP地址 --port 6001 --device 你的硬盤 --weight 100

swift-ring-builder container.builder rebalance

swift-ring-builder object.builder create 10 1 1

swift-ring-builder object.builder add \
  --region 1 --zone 1 --ip 你的IP地址 --port 6000 --device 你的硬盤 --weight 100

swift-ring-builder object.builder rebalance

2、在/etc/swift下下載文件

curl -o /etc/swift/swift.conf \
  https://git.openstack.org/cgit/openstack/swift/plain/etc/swift.conf-sample?h=stable/newton

3忽匈、執(zhí)行以下命令兩次獲得兩個(gè)字符串

openssl rand -hex 10

4房午、編輯/etc/swift/swift.conf

[swift-hash]
swift_hash_path_suffix = 第一個(gè)字符串
swift_hash_path_prefix = 第二個(gè)字符串
[storage-policy:0]
name = Policy-0
default = yes

5、修改權(quán)限

chown -R root:swift /etc/swift/*

6丹允、重啟服務(wù)

service memcached restart
service swift-proxy restart

7郭厌、啟動對象存儲服務(wù)

swift-init all start

驗(yàn)證swift

1、運(yùn)行腳本

source demo-openrc

2雕蔽、獲得服務(wù)狀態(tài)

swift stat

顯示類似以下信息即成功

                        Account: AUTH_ed0b60bf607743088218b0a533d5943f
                     Containers: 0
                        Objects: 0
                          Bytes: 0
Containers in policy "policy-0": 0
   Objects in policy "policy-0": 0
     Bytes in policy "policy-0": 0
    X-Account-Project-Domain-Id: default
                    X-Timestamp: 1444143887.71539
                     X-Trans-Id: tx1396aeaf17254e94beb34-0056143bde
                   Content-Type: text/plain; charset=utf-8
                  Accept-Ranges: bytes

3折柠、創(chuàng)建一個(gè)容器

openstack container create 容器名

4、上傳一個(gè)對象

openstack object create 容器名 對象名

5萎羔、獲得對象列表

openstack object list 容器名字

6液走、下載對象

 openstack object save 容器名 對象名

也可以用curl或postman驗(yàn)證

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子缘眶,更是在濱河造成了極大的恐慌嘱根,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件巷懈,死亡現(xiàn)場離奇詭異该抒,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)顶燕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門凑保,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人涌攻,你說我怎么就攤上這事欧引。” “怎么了恳谎?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵芝此,是天一觀的道長。 經(jīng)常有香客問我因痛,道長婚苹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任鸵膏,我火速辦了婚禮膊升,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谭企。我一直安慰自己廓译,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布债查。 她就那樣靜靜地躺著责循,像睡著了一般。 火紅的嫁衣襯著肌膚如雪攀操。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天秸抚,我揣著相機(jī)與錄音速和,去河邊找鬼。 笑死剥汤,一個(gè)胖子當(dāng)著我的面吹牛颠放,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吭敢,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼碰凶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起欲低,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤辕宏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后砾莱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瑞筐,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年腊瑟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了聚假。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,953評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡闰非,死狀恐怖膘格,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情财松,我是刑警寧澤瘪贱,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站游岳,受9級特大地震影響政敢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜胚迫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一喷户、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧访锻,春花似錦褪尝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至龟虎,卻和暖如春璃谨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鲤妥。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工佳吞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人棉安。 一個(gè)月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓底扳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親贡耽。 傳聞我的和親對象是個(gè)殘疾皇子衷模,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Openstack Mitaka安裝部署教程 一鹊汛、實(shí)驗(yàn)環(huán)境: 系統(tǒng):centos7.2-minimal 網(wǎng)絡(luò):管理...
    指間_流年閱讀 2,197評論 0 0
  • Nova Nova,即計(jì)算服務(wù)阱冶,是OpenStack計(jì)算的彈性控制器刁憋。Nova可以說是整個(gè)云平臺最重要的組件,Op...
    邵勝奧閱讀 4,161評論 0 8
  • 一熙揍、安裝和配置KeyStone 1. 為KeyStone配置數(shù)據(jù)庫 使用數(shù)據(jù)庫客戶端绽昏,以root用戶連接到數(shù)據(jù)庫中...
    野狗子嗷嗷嗷閱讀 3,751評論 4 4
  • 之一平躺 平躺看世界今妄, 世界好象輕飄飄的曹质, 沒有一點(diǎn)重量赁炎。 就象一只小鳥靠在一棵 樹上,等待飛翔意系。 平躺看生活泥耀, ...
    閑不語閱讀 140評論 0 2
  • 有時(shí)候心眼也別太好了,不要什么事都為別人著想蛔添!別人不會想你的感受和種種不易痰催。他們會覺得一切都是理所當(dāng)然。 ? ???
    迷人的瘋子閱讀 127評論 0 0