Skip to content

Latest commit

 

History

History
333 lines (207 loc) · 10.4 KB

5.CEPH-STORAGE-CLUSTER.md

File metadata and controls

333 lines (207 loc) · 10.4 KB

1.CEPH STORAGE CLUSTER

  • Ceph Storage Cluster là nền tảng cho Ceph . Ceph storage bao gồm 3 loại daemons : CEPH OSD Daemon ( OSD )lưu trữ dữ liệu dưới dạng đối tượng ( data as object ) trên các storage node. Ceph Monitor ( MON ) lưu trữ bản sao về cluster map, Ceph Manager (ceph-mgr) . Một Cluster Storage bao gồm nhiều storage node. Tuy nhiên yêu cầu tối thiểu để thiets lập một Ceph strorage cluster có ít nhất một Monitor và hai Ceph OSD cho việc data repication
  • Ceph Filesystem, Ceph Object Storage and Ceph Block Devices đều thực hiện đọc và viết tới Ceph Storage Cluster

2. CONFIG AND DEPLOY

2.1. STORAGE DEVICE

  • Có 2 thần phần trong Ceph daemon lưu trữ dữ liệu ở dưới disk .

    • Ceph OSDs (or Object Storage Daemons) : thực hiện hầu hết quá trình lưu trữ dữ liệu . Mỗi OSD thường là một stroage device có thể là hard disk (HDD) or solid state disk (SSD).
    • Ceph Monitor : quản lý thông tin trạng thái về cụm, các thành viên trong cụm cũng như xác thực thông tin
  • Có 2 kiểu để ODS có thể quản lý dữ liệu chúng lưu xuống Ceph Storage Cluster. ( backend )

    • BLUESTORE : lưu trữ trực tiếp các block device mà không cần phải tương tác với các system interface.
    • FileStore : các object được lưu với một file riêng lẻ.
  • Bluestore bao gồm các chứng năng chính sau đây :

    • Direct management of storage devices. : quản lý trực tiếp các raw block hoặc partion
    • Metadata management with RocksDB. : quản lý metdata dưới dạng key=value
    • Full data and metadata checksumming. :
    • Inline compression. : có khả năng nén dữ liệu
    • Multi-device support : hỗ trợ nhiều block device để lưu trữ dữ liệu
    • Efficient copy-on-write.
  • Mỗi storage device được quản lý bởi bluestone được chia thành 2 thành phần :

    • một XFS partion nhỏ , chứa metdata của OSD
    • partion còn lại dứa dữ liệu mà Bluestone quản lý, dùng để lưu trữ dữ liệu ( object)
  • Sau bản : Luminous 12.2.z, Bluestore đang là backend được cấu hình mặc định

2.2 : CONFIGURING CEPH SECTION

  • CEPH service bao gồm : Ceph Monitor (ceph-mon), Ceph Manager (ceph-mgr),Ceph OSD Daemon (ceph-osd), Ceph Metadata Server (ceph-mds), Ceph Gateway daemons (radosgw). . Mỗi loại service sẽ chứa các cấu hình cho chính nó và bị ảnh hưởng bởi các cấu hình trong [global].

  • Cấu hình :

  • http://docs.ceph.com/docs/mimic/rados/configuration/ceph-conf/

  • http://docs.ceph.com/docs/mimic/rados/configuration/common/

  • Các file config trong ceph có thể đặt tại đây

    • giá trị của biến $CEPH_CONF trong env
    • chỉ định cấu hình tại : -c path/path
    • /etc/ceph/$cluster.conf
    • ~/.ceph/$cluster.conf
    • ./$cluster.conf
  • Các section trong file cấu hình cuả ceph tại "/etc/ceph/ceph.conf"

[global]
[mon]
[mgr]
[osd]
[mds]
[client ]
  • Các seciton có thể chia nhỏ , ví dụ
[mon.a]

        host = {hostname}
        mon addr = {ip-address}:6789

[mon]
        mon host = hostname1,hostname2,hostname3
        mon addr = 10.0.0.10:6789,10.0.0.11:6789,10.0.0.12:6789

[osd.0]
        host = {hostname}
  • Cấu hình Ceph có thể chỉnh sửa tại thời điểm hiện tại
ceph tell <name> config set <option> <value>

ceph tell osd.* config set mon max pg per osd 300


ceph daemon <name> config set <option> <value>

  • Xem cấu hình hiện tại
ceph config show osd.0

ceph daemon osd.0 config show

  • Dump cấu hình
ceph daemon osd.0 config diff

  • Xem cấu hình mặc định
 ceph-conf  --show-config  | grep mon_max_pg_per_osd

3. Ceph Common Setting

3.1. NETWORK

  • Phân chia đường mạng : Public Network và Cluster Network

    • Hiệu năng : ceph OSD thực hiện data replica , việc sử dụng cluster network cho data repicate làm giảm chịu tải đường mạng giữa Ceph Client và Ceph OSD
    • Bảo mật : tránh tình mạng đường mạng data replicat bị tấn công DOS, sẽ làm cho data bị nghẽn và các placement group bị mất trạng thái : active + clean , gây ra việc Ceph client không đọc và ghi data vào cụm được . Cluster network nên là một mạng riêng cho cluster, không internet , không external connect.
  • Cấu hình RULE IPtable an toàn cho Ceph cluster

  • Với CEPH MON sẽ luôn luôn nằm tại Public network

sudo iptables -A INPUT -i {iface} -p tcp -s {ip-address}/{netmask} --dport 6789 -j ACCEPT

  • Sau khi OSD fail trở lại trạngh thái bình thường, OSD sẽ bind 1 port mới thay vì port cũ
sudo iptables -A INPUT -i {iface}  -m multiport -p tcp -s {ip-address}/{netmask} --dports 6800:7300 -j ACCEPT

  • Cấu hình Public Network và Cluster Network
[global]
public network = {public-network/netmask}
cluster network = {cluster-network/netmask}

  • Cấu hình Network cho các MON và OSD
[osd.0]
        public addr = {host-public-ip-address}
        cluster addr = {host-cluster-ip-address}

[mon.a]

        host = {hostname}
        mon addr = {ip-address}:6789

[osd.0]
        host = {hostname}

3.2 MON

  • Ceph MON cung cấp khả năng lưu trữ các một bản master copy của cluster map. Các client muốn làm việc với cumj chỉ cần kết nối tới MON và thực hiện nhận các cluster map, sau đó có thể thực hiện ghi, viết trên toàn cụm .

  • Ceph MON có thể tăng tính khả dung cao bằng cách cấu hình nhiều mon daemon, khi một MON đi vào trình trạng crash, cluster vẫn hoạt động bình thường. Cần ít nhất 3 MON để đảm bảo thụât toán Paxos có thể xác định được CRUSH MAP được cập nhật gần nhất theo quorum để ccác client có thể dụng để viết data vào cụm

  • MONITOR QUORUM : Khi một cluster sử dụng nhiều MON deamon để cung cấp khả năng khả dụng cao , Ceph sử dụng Paxos để thiết lập về sự động bộ của cluster map, yêu cầu số MON tối thiểu để cluster có thể hoạt động.Để truy trì qourum giữa các CEPH MON, cluster yêu cầu có nhiều hơn n/2 MON ( số mon chẵn), và ( n + 1) / 2 (mon lẻ) ở trạng thái sẵn sàng trong Cluser. Ngoài ra MON còn cung cấp khả năng xác định I/O operation, khi client kết nối tới cluster sẽ chọn MON leader để kết nối đầu tiên.

  • Cấu hình MON
[mon]
        mon host = hostname1,hostname2,hostname3
        mon addr = 10.0.0.10:6789,10.0.0.11:6789,10.0.0.12:6789
[mon.a]
        host = hostname1
        mon addr = 10.0.0.10:6789
  • Cấu hình folder của MON
/var/lib/ceph/mon/$cluster-$id

  • STORAGE CAPACITY
    • Khi ceph cluster chạm ngưỡng giới hạn lưu trữ, ceph tạm ngừng nhận request ghi và viết dữ liệu để đảm bảo dữ liệu toàn vẹn . ceph cung cấp khả năng xây dựng tỉ lệ giữa khả năng lưu trữ trong cụm và khả năng vật lý . Mặc định tỉ lệ sẽ là 95%.
[global]

        mon osd full ratio = .80
        mon osd backfillfull ratio = .75
        mon osd nearfull ratio = .70

3.3. Authencation

  • Cấu hình authen
[global]
auth cluster required = cephx
auth service required = cephx
auth client required = cephx

3.4. OSD

[osd]
        osd journal size = 5120

[osd.0]
        host = osd-host-a

[osd.1]
        host = osd-host-b

3.5. POOL, PG, AND CRUSH

[global]


osd pool default size = 3  # Write an object 3 times.
osd pool default min size = 2 # Allow writing two copies in a degraded state.

osd_pool_default_pg_num = 250
osd_pool_default_pgp_num = 250

  • Khuyến nghị max 100 PG trên mỗi oSD. Số tổng PG trên toàn OSD sẽ chia nhỏ cho số replica. Ví dụ có 10 OSD, với số repicate là 3 . Số PG sẽ là (100 * 10 ) /3 = 333

  • Bài toán tính PG . Nếu có 3 OSD.

  • Tím số OSD đang có

ID CLASS WEIGHT  TYPE NAME           STATUS REWEIGHT PRI-AFF 
-1       0.14639 root default                                
-3       0.04880     host ceph_node1                         
 0   hdd 0.04880         osd.0           up  1.00000 1.00000 
-5       0.04880     host ceph_node2                         
 1   hdd 0.04880         osd.1           up  1.00000 1.00000 
-7       0.04880     host ceph_node3                         
 2   hdd 0.04880         osd.2           up  1.00000 1.00000 

  • Check số lượng pool
[root@ceph_node1 ~]# ceph osd lspools
2 rbd_1

  • Check số replica của pool
ceph osd dump | grep repli

hoặc xem tại 

osd pool default size = 3 
  • Tính toán số PG tổng có thể khởi tạo
Total PGs = (Total_number_of_OSD * 100) / max_replication_count

Total PG =  (3 * 100 ) / 3 = 100


  • TÍnh toán số PG trên chia trên từng pool
Total PGs/pool = ((Total_number_of_OSD * 100) / max_replication_count) / pool count

Total PGs/pool = ((3 * 100) / 2 ) / 2 =  75

ceph osd pool create <pool-name> <pg-number> <pgp-number> - To create a new pool

ceph osd pool get <pool-name> <pg_num> - To get number of PG in a pool

ceph osd pool get <pool-name> <pgp_num> - To get number of PGP in a pool

ceph osd pool set <pool-name> <pg_num number> - To increase number of PG in a pool

ceph osd pool set <pool-name> <pgp_num number> - To increase number of PGP in a poo

10 . Tài liệu