COLO.in.th > คลังความรู้ > CentOS 7 > การติดตั้ง Ceph Storage บน Centos 7
ขอเกริ่นก่อนครับ สำหรับตัว CEPH Storage มันเป็น opensource software หลักการก็คือการทำงานในรูปแบบ Software-Defined Storage โดยมีโปรแกรมเมอร์มากมายเข้ามามีส่วนร่วมและดึงเอา Software ตัวนี้ไปใช้งาน หรือแม้แต่การเอาไปปรับปรุงและเปลี่ยนชื่อเป็น Software ของตัวเอง เพราะว่ามีผู้ที่มองเห็นเทรนของเทคโนโลยี ในแนวทางนี้เป็นจำนวนมาก จึงทำให้ CEPH ถูกนำมาใช้กันอย่างแพร่หลาย โดยเทรนที่ว่านี้ในส่วนของ CEPH คือการนำ Storage ของ Server ต่างๆไม่ว่าจะมากหรือน้อย สามารถนำเข้ามารวมกันในระบบ CEPH เพื่อเราจะได้ Storage Performance และลดความเสี่ยงที่ Hardware จะเสียหายเนื่องจากทั้งระบบจะทำงานในรูปแบบของ Full Cluster ที่สำคัญเรายังสามารถใช้งาน CEPH Storage ได้ 3 รูปแบบ ได้แก่ object block และ file system
โดย CEPH Storge จะประกอบไปด้วย NODE หลักๆดังนี้
ในที่นี้ ผมจะยกตัวอย่างการ Setup บน Centos 7
ขึ้นตอนการเตรียมพร้อมสำหรับการติดตั้ง Ceph
1. Config IP Address ของแต่ละ Node ให้เรียบร้อยโดยแบ่ง Network เป็น public network, cluster network
First Setup NIC for ceph storage
ceph-admin (node to manage all ceph node with in a cluster):
nic1 -> 192.168.1.2
nic2 -> 192.168.10.2ceph-mon (Monitor nodes)
mon1
nic1 -> 192.168.1.3mon2
nic1 -> 192.168.1.4ceph-mds (metadata server nodes)
mds1
nic1 -> 192.168.1.5mds2
nic1 -> 192.168.1.6ceph-osd (Object store daemon, the storage cluster)
osd1
nic1 -> 192.168.1.7
nic2 -> 192.168.10.7osd2
nic1 -> 192.168.1.8
nic2 -> 192.168.10.8osd3
nic1 -> 192.168.1.9
nic2 -> 192.168.10.9osd4
nic1 -> 192.168.1.10
nic2 -> 192.168.10.10
2. คือการติดตั้ง ntp server เพื่อให้เวลาทั้ง Cluster ตรงกัน
$ sudo apt-get install ntp
3. การติดตั้ง Ceph deploy บน ceph-admin เพราะว่าการ config ทั้งหมด จะสามารถทำได้โดยการใช้ ceph-deploy command
$ yum install -y yum-plugin-priorities
$ rpm -Uhv http://ceph.com/rpm-giant/el7/noarch/ceph-release-1-0.el7.noarch.rpm
$ yum update -y && yum install ceph-deploy -y
3. ขั้นตอนนี้ต้องทำทุก node ใน Cluster เพราะ ceph-deploy จะทำงานผ่านการ ssh ไปยัง node ต่างเราจึงต้องสร้าง User และทำให้สามารถใช้งานคำสั่งโดยไม่ต้องพิมพ์ sudo
$ sudo useradd -d /home/ceph -m ceph -s
$ sudo passwd ceph
$ sudo useradd -d /home/ceph -m ceph -s /bin/bash
$ sudo passwd ceph
<Enter password>
$ echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph
$ sudo chmod 0440 /etc/sudoers.d/ceph
$ vi /etc/hosts
127.0.0.1 localhost
192.168.1.2 ceph-admin
192.168.1.3 mon1
192.168.1.4 mon2
192.168.1.5 mds1
192.168.1.6 mds2
192.168.1.7 osd1
192.168.1.8 osd2
192.168.1.9 osd3
192.168.1.10 osd4
4. สร้าง public key และ copy ไปยัง node ต่างๆภายใน Cluster ขั้นตอนนี้ทำใน Deploy node
$ ssh-keygen
$ ssh-copy-id ceph@mon1
$ ssh-copy-id ceph@mon2
$ ssh-copy-id ceph@mds1
$ ssh-copy-id ceph@mds2
$ ssh-copy-id ceph@osd1
$ ssh-copy-id ceph@osd2
$ ssh-copy-id ceph@osd3
$ ssh-copy-id ceph@osd4
5. ตั้งค่า SSH access configuration ด้าวยการสร้าง .ssh/config ภายใน home directory
$ vi /home/ceph/.ssh/config
Host mon1
Hostname mon1
User cephHost mon2
Hostname mon2
User cephHost mds1
Hostname mds1
User cephHost mds2
Hostname mds2
User cephHost osd1
Hostname osd1
User cephHost osd2
Hostname osd2
User cephHost osd3
Hostname osd3
User cephHost osd4
Hostname osd4
User ceph
6. มาถึงขึ้นตอนนี้คือ test เข้า ssh ไปยัง node ต่างๆ
$ ssh mon1
$ ssh mon2
$ ssh mds1
$ ssh mds2
$ ssh osd1
$ ssh osd2
$ ssh osd3
$ ssh osd4
NOTE: ต้องเข้าใช้งานได้ทันทีไม่ต้องใส่ Password
ขั้นตอนการติดตั้งและ config CEPH ผ่าน Server ceph-deploy (ช่างง่ายดายอะไรอย่างนี้)
1. ทำการสร้าง folder สำหรับเก็บ files config ต่างๆ และหลังจากนี้เราจะทำงานผ่าน folder นี้เป็นส่วนใหญ่
$ su - ceph
$ mkdir ceph-cluster
$ cd ceph-cluster
2. กำหนด monitor node ใน cluster ในที่นี้เรามี monitor 2 server ก็ใส่เลยไม่ต้องรอ
$ ceph-deploy new mon1 mon2
3. จากนั้นเราจะได้ file ceph.conf เราก้แก้เลยครับ อยากจะเพิ่มเติมอะไรก็เริ่มใส่ได้เลย แต่อย่าไปลบของที่มีอยู่นะครับ เราใช้คำว่าเพิ่ม ในที่นี้ผมจะเริ่มด้วยการเพิ่ม public, cluster network
$ vi ceph.conf
พิมใส่เข้าไป
public network = 192.168.1.0/24
cluster network = 192.168.10.0/24
และเพิ่มเติม option ตามเห็นสมควร ขอยกตัวอย่างเช่นสร้าง copy ทีละ 3 , อย่างน้อยต้องมี 2 copy , ค่า pg_num,pgp_num มีสูตรคำนวนครับไม่ตายตัวจะเพิ่มลดตามจำนวน copy
osd pool default size = 3
osd pool default min size = 2
osd pool default pg num = 4096
osd pool default pgp num = 4096
6. ขั้นตอนนี้เราจะติดตั้งโปรแกรม ceph ทีเดียวแต่มีผลกับทุก node ใน cluster ด้วยคำสั่งใน ceph-deploy(ขั้นตอนนี้อาจใช้เวลาสักหน่อย)
$ ceph-deploy install --no-adjust-repos ceph-admin mon1 mon2 mds1 mds2 osd1 osd2 osd3 osd4
7. เมื่อเราติดตั้งโปรแกรมเสร็จแล้วต่อไปก็คือการ create monitor และ gather keys
$ ceph-deploy mon create-initial
ขั้นตอนการ setup OSD server เพื่อนำ storage ภายใน OSD server มาใช้งาน
เราสามารถจะดึงเอาพื้นที่ภายใน OSD server มาใช้งานได้อย่างง่ายดาย
1. ตรวจดูว่าภายใน OSD server มี disk อยู่เท่าไรและนำ disk มาใช้ได้บ้าง ด้วยคำสั่ง ceph-deploy disk list [node]
$ ceph-deploy disk list osd1
2. จากนั้นทำการลบ data ภายใน disk เพื่อเตรียมความพร้อม
ด้วยคำสั่ง ceph-deploy disk zap --fs-type xfs [nodename]:[path/diskname]
$ ceph-deploy disk zap --fs-type xfs osd1:/dev/sd<x>1
$ ceph-deploy disk zap --fs-type xfs osd2:/dev/sd<x>1
$ ceph-deploy disk zap --fs-type xfs osd3:/dev/sd<x>1
$ ceph-deploy disk zap --fs-type xfs osd4:/dev/sd<x>1
3. จากคำสั่ง zap ก็จะถึงขั้นตอนการ Prepare และ activate disks
ด้วยคำสั่ง
ceph-deploy osd prepare [nodename]:[path/diskname]
ceph-deploy osd activate [nodename]:[path/diskname]
$ ceph-deploy osd prepare ceph-osd1:sdb ceph-osd1:sdc ceph-osd1:sdd ceph-osd1:sde
$ ceph-deploy osd activate ceph-osd1:sdb1 ceph-osd1:sdc1 ceph-osd1:sdd1 ceph-osd1:sde1
ขั้นตอนการ setup mds server (metadata server daemon)
mds server มีไว้สำหรับให้ ceph client ที่ใช้งาน ceph ผ่าน ceph filesystem ง่ายและสะดวก ด้วยคำสั่ง
$ ceph-deploy mds create mds1 mds2
ขั้นตอนสุดท้ายในการติดตั้ง
คือการ copy config และ keys ไปยังทุกเครื่องภายใน ceph cluster และตรวจสอบสถานะการ deploy
ด้วยคำสั่ง ceph-deploy admin ceph-admin [nodename]
$ ceph-deploy admin ceph-admin mon1 mon2 mds1 mds2 osd1 osd2 osd3 osd4
แก้ไข permission เพื่อให้ file สามารถใช้งานได้
$ sudo chmod +r /etc/ceph/ceph.client.admin.keyring
$ ceph health
$ ceph status << ถ้าขึ้นว่า HEALTH_OK ก็ตามนั้นครับแสดงว่า OK
ขั้นตอนการลบ node ออกจาก Cluster
ไม่ว่ากรณีใดก็แล้วแต่มาถึงจุดๆหนึ่งเราอาจได้พบกับปัญหาทำไงละครับ ทำไงละครับ ผม remove node ออกจาก cluster เลยละกันตัดปัญหาเพราะเรามี copy อยู่แล้ว
สามารถทำได้ดังนี้
$ ceph-deploy purgedata {ceph-node} [{ceph-node}]
$ ceph-deploy forgetkeys
ขอจบเพียงเท่านี้สำหรับการติดตั้งครับ อยากทราบข้อมูลเพิ่มเติมก็ถามมาได้ และสำหรับผู้ที่กำลังศึกษาผมขอให้เครดิตกับ http://ceph.com และใน blog ต่อไปเรามาขึ้นเรื่องการนำไปใช้งานกันดีกว่าครับ ขอบอกว่าถ้าไม่เข้าใจก็จะงมเข็มกันไปอีกนาน
** Credit link(s):** ceph.com http://ceph.com/ #
ที่มา http://thaipotato.wixsite.com/blog/single-post/2016/07/19/การติดตั้ง-Ceph-Storage-บน-Centos-7
บันทึกสู่รายการโปรดของฉัน พิมพ์หัวข้อนี้
Powered by WHMCompleteSolution