Flocker 做為後端儲存代理 docker volume-driver 支援

丶小炒肉發表於2016-08-31

docker Flocker

https://github.com/ClusterHQ/flocker/


文件:

https://docs.clusterhq.com/en/latest/docker-integration/


docker swarm 部署 Flocker

https://docs.clusterhq.com/en/latest/docker-integration/manual-install.html


CentOS 7 安裝 flocker-cli

需要 python 2.7

yum install gcc libffi-devel git

[root@swarm-master ~]# git clone https://github.com/ClusterHQ/flocker

[root@swarm-master ~]# cd flocker

[root@swarm-master flocker]# pip install -r requirements/all.txt

[root@swarm-master flocker]# python setup.py install

[root@swarm-master flocker]# flocker-ca --version
1.14.0+1.g40433b3

 

CentOS 7 安裝 flocker node 在每個節點中

[root@swarm-node-1 ~]# yum list installed clusterhq-release || yum install -y https://clusterhq-archive.s3.amazonaws.com/centos/clusterhq-release$(rpm -E %dist).noarch.rpm
[root@swarm-node-1 ~]# yum install -y clusterhq-flocker-node
[root@swarm-node-1 ~]# yum install -y clusterhq-flocker-docker-plugin


在 管理節點 與 node 節點 建立 flocker 配置目錄

mkdir /etc/flocker

[root@swarm-master ~]# cd /etc/flocker

一、生成 flocker 管理伺服器 證照
[root@swarm-master flocker]# flocker-ca initialize cnflocker
Created cluster.key and cluster.crt. Please keep cluster.key secret, as anyone who can access it will be able to control your cluster.


二、生成 flocker 控制節點 證照

官方 建議使用 hostname, 而不使用IP, 我這裡暫時使用 IP

[root@swarm-master flocker]# flocker-ca create-control-certificate 172.16.1.25

 

拷貝 control-172.16.1.25.crt control-172.16.1.25.key cluster.crt 三個檔案到 控制節點 中

注意:cluster.key 檔案為 key 檔案,只儲存在本機,或者管理伺服器 (我這裡 管理伺服器 與 控制節點 為同一臺伺服器)

[root@swarm-master flocker]# scp control-172.16.1.25.crt 172.16.1.25:/etc/flocker

[root@swarm-master flocker]# scp control-172.16.1.25.key 172.16.1.25:/etc/flocker

[root@swarm-master flocker]# scp cluster.crt 172.16.1.25:/etc/flocker


重新命名 剛複製過來的 control-172.16.1.25.key control-172.16.1.25.crt

[root@swarm-master flocker]# mv control-172.16.1.25.crt control-service.crt
[root@swarm-master flocker]# mv control-172.16.1.25.key control-service.key

設定 許可權

[root@swarm-master flocker]# chmod 0700 /etc/flocker
[root@swarm-master flocker]# chmod 0600 /etc/flocker/control-service.key

 

三、生成 flocker node節點 證照 , 每個節點都必須生成一個不一樣的證照

[root@swarm-master flocker]# flocker-ca create-node-certificate
Created 6cc5713a-4976-4545-bf61-3686f182ae50.crt. Copy it over to /etc/flocker/node.crt on your node machine and make sure to chmod 0600 it.

複製 6cc5713a-4976-4545-bf61-3686f182ae50.crt 6cc5713a-4976-4545-bf61-3686f182ae50.key cluster.crt 到 flocker node 節點 /etc/flocker 目錄中

[root@swarm-master flocker]# scp 6cc5713a-4976-4545-bf61-3686f182ae50.crt 172.16.1.28:/etc/flocker
[root@swarm-master flocker]# scp 6cc5713a-4976-4545-bf61-3686f182ae50.key 172.16.1.28:/etc/flocker
[root@swarm-master flocker]# scp cluster.crt 172.16.1.28:/etc/flocker


登陸 node 節點 重新命名 crt 與 key 檔案 為 node.crt node.key

[root@swarm-node-1 flocker]# mv 6cc5713a-4976-4545-bf61-3686f182ae50.crt node.crt
[root@swarm-node-1 flocker]# mv 6cc5713a-4976-4545-bf61-3686f182ae50.key node.key

[root@swarm-node-1 flocker]# chmod 0700 /etc/flocker
[root@swarm-node-1 flocker]# chmod 0600 /etc/flocker/node.key


四、生成 Flocker Plugin for Docker 客戶端 API

[root@swarm-master flocker]# flocker-ca create-api-certificate plugin
Created plugin.crt. You can now give it to your API enduser so they can access the control service API.

複製 plugin.crt plugin.key 到 flocker node 節點 /etc/flocker 目錄中。
[root@swarm-master flocker]# scp plugin.crt 172.16.1.28:/etc/flocker/
[root@swarm-master flocker]# scp plugin.key 172.16.1.28:/etc/flocker/

 

五、 控制節點 執行 flocker Service

[root@swarm-master flocker]# systemctl enable flocker-control
[root@swarm-master flocker]# systemctl start flocker-control


六、 配置 node 節點 以及 後端儲存

在每個節點 新增 配置檔案

[root@swarm-node-1 flocker]# vi /etc/flocker/agent.yml

---------------------------------------------------------------------------------------------------

"version": 1
"control-service":
"hostname": "172.16.1.25"
"port": 4524

# The dataset key below selects and configures a dataset backend (see below: aws/openstack/etc).
# # All nodes will be configured to use only one backend

dataset:
backend: "aws"
region: "<your region; for example, us-west-1>"
zone: "<your availability zone; for example, us-west-1a>"
access_key_id: "<AWS API key identifier>"
secret_access_key: "<Matching AWS API key>"

---------------------------------------------------------------------------------------------------

 

dataset 為後端儲存的設定選項。

後端儲存支援列表: https://docs.clusterhq.com/en/latest/flocker-features/storage-backends.html#supported-backends

 

七、 node 節點 執行 flocker-agent 與 flocker-docker-plugin

[root@swarm-node-1 flocker]# systemctl enable flocker-dataset-agent
[root@swarm-node-1 flocker]# systemctl start flocker-dataset-agent
[root@swarm-node-1 flocker]# systemctl enable flocker-container-agent
[root@swarm-node-1 flocker]# systemctl start flocker-container-agent

[root@swarm-node-1 flocker]# systemctl enable flocker-docker-plugin
[root@swarm-node-1 flocker]# systemctl restart flocker-docker-plugin


八、 docker volume-driver 測試

[root@swarm-master]# docker run -v apples:/data --volume-driver flocker busybox sh -c "echo hello > /data/file.txt"

[root@swarm-master]# docker run -v apples:/data --volume-driver flocker busybox sh -c "cat /data/file.txt"

 

相關文章