IT. POST LIST

POST ALL LABEL

CEPH - CRUSH RULE SET (Ver. 10.2.11_jewel, OS. Centos7 ) - with 삽질..

By 때찌때찌맴매 - 12월 21, 2018

ceph - CRUSH RULE SET (Ver. 10.2.11_jewel, OS. Centos7) - with 삽질

*  ceph crush rule 를 사용하여 osd 구분 설정. SATA osd, SSD osd 나눠서 사용

* 위 설명대로  hdd 타입별로 구성하여 운영 했지만( sata,ssd 상품군이 둘다 달랐음..;;) 이번에는 같은 인프라에서 둘다 사용 할 것을 가정하고 구성 진행.(지금은 ssd 를 사용하지 않지만, 추후에 ssd 타입도 추가 하라는 오더가 나올꺼기 때문...)

* 해당 작업을 하는 이유는 리얼서버 + ceph를 사용할때  상단에 하이퍼 바이저 개념인 openstack 등이 없기 때문에 ceph에 자동으로 접근 하려면 os를 커스텀 해야 함.. os  커스텀은.. 나중에.. 포스팅..( 계속 나중이라함...ㅈㅅ)

* 참고 : 

[ CRUSH RULE SET 생성 및 적용 ]

i. RULE 생성
* ceph를 구성하면 기본적으로 rbd 풀이 생성되어 있는데(10버전까지. 11버전은 모르겠고...12버전은 없음) 해당 pool을 rename 해서 hdd pool로 변경

[root@MGMT09:44:39:]# ceph osd pool rename rbd hdd_pool

* 해당 명령어를 통해 룰 생성
============================================================================================
ceph osd crush rule create-simple {rulename} {root} {bucket-type} {first|indep}
============================================================================================

[root@MGMT09:44:39:]# ceph osd crush rule create-simple ssd default host firstn

[root@MGMT09:48:21:# ceph osd crush rule ls
[
    "replicated_ruleset",
    "ssd"
]

* ssd 룰셋을 생성하기 전에 기본으로 있던 " replicated ruleset "은 제거. (제거 안해도됨. 그냥 깔끔하게 하기 위해서 제거하는것)

[root@MGMT09:48:27:]# ceph osd crush rule rm replicated_ruleset
[root@MGMT09:48:46:]# ceph osd crush rule ls
[
    "ssd"
]

[root@MGMT09:49:03:]# ceph osd crush rule create-simple hdd default host firstn
[root@MGMT09:49:18:]# ceph osd crush rule ls
[
    "hdd",
    "ssd"
]


ii. POOL 생성 및 RULE 적용
* 룰셋을 나누고 osd를 분류 하기 전에는 pool 생성 명령어는 pgp 값 까지만 넣었으나 해당 작업들을 진행하면서 한번에 룰셋까지 적용.
* rename된 hdd_pool 은 바로 룰을 적용 시키고, ssd 는 풀 생성과 동시에 룰 적용.

[root@MGMT09:44:39:]# ceph osd pool set hdd_pool crush_ruleset 0
set pool 1 crush_ruleset to 0

* 해당 명령어를 통해 풀생성과 동시에 룰셋 적용 
============================================================================================
ceph osd pool create {pool_name} {pg} {pgp} {replicated | erasure-code-profile} {crush-rule-name}
============================================================================================
[root@MGMT09:49:39:]# ceph osd pool create ssd_pool 128 128 replicated ssd
pool 'ssd_pool' created

* ceph osd dump 를 통해 확인 시, 각 pool 과 crush ruleset이 적용 되어 있는 것을 확인 할 수 있음.
  rule 은 순서대로   0 = hdd, 1 = ssd 로 확인 가능.

[root@MGMT09:49:40:~]# ceph osd dump | grep pool
pool 0 'hdd_pool' replicated size 2 min_size 1 crush_ruleset 0 object_hash rjenkins pg_num 128 pgp_num 128 last_change 59 flags hashpspool stripe_width 0
pool 1 'ssd_pool' replicated size 2 min_size 1 crush_ruleset 1 object_hash rjenkins pg_num 128 pgp_num 128 last_change 74 flags hashpspool stripe_width 0


iii. bucket 생성 및 타입 osd bucket 이동

* bucket을 생성 하여 그 하위에 리스트들을 넣어놓으면 그룹으로 인식하여 각 pool별로 독립성을 가지게됨.
* ceph 운영중에 ssd osd가 문제가 생겼을 경우에 hdd_pool 은 아무런 영향을 갖지 않고, 각 타입 osd 별로 영향을 받게됨.

[root@MGMT09:33:05:]# ceph osd crush add-bucket hdd root
added bucket hdd type root to crush map
[root@MGMT09:34:04:]# ceph osd crush add-bucket ssd root
added bucket ssd type root to crush map

* ceph osd tree를 통해 bucket 생성 확인

[root@MGMT01:31:51:~]# ceph osd tree
ID WEIGHT   TYPE NAME       UP/DOWN REWEIGHT PRIMARY-AFFINITY 
-9        0 root ssd                                          
-8        0 root hdd                                          
-1 59.06656 root default                                      
-2 14.54019     host OSD-0                                    
 0 14.54019         osd.0        up  1.00000          1.00000 
-3 14.54019     host OSD-1                                    
 1 14.54019         osd.1        up  1.00000          1.00000 
-4 14.54019     host OSD-2                                    
 2 14.54019         osd.2        up  1.00000          1.00000 
-5 14.54019     host OSD-3                                    
 3 14.54019         osd.3        up  1.00000          1.00000 
-6  0.45380     host OSD-20                                   
 4  0.45380         osd.4        up  1.00000          1.00000 
-7  0.45200     host OSD-21                                   
 5  0.45200         osd.5        up  1.00000          1.00000 

* hdd osd 와 ssd osd 를  각 bucket으로 이동
============================================================================================
* 해당 작업을 통해 장애 포인트 발생.
============================================================================================
[root@MGMT03:38:38:~]# ceph osd crush move OSD-0 root=hdd
moved item id -2 name 'OSD-0' to location {root=hdd} in crush map
[root@MGMT03:38:38:~]# ceph osd crush move OSD-1 root=hdd
moved item id -3 name 'OSD-1' to location {root=hdd} in crush map
[root@MGMT03:38:38:~]# ceph osd crush move OSD-2 root=hdd
moved item id -4 name 'OSD-2' to location {root=hdd} in crush map
[root@MGMT03:38:38:~]# ceph osd crush move OSD-3 root=hdd
moved item id -5 name 'OSD-3' to location {root=hdd} in crush map
[root@MGMT03:38:38:~]# ceph osd crush move OSD-20 root=ssd
moved item id -6 name 'OSD-20' to location {root=ssd} in crush map
[root@MGMT03:38:38:~]# ceph osd crush move OSD-21 root=ssd
moved item id -7 name 'OSD-21' to location {root=ssd} in crush map


[root@MGMT10:02:25:~]# ceph osd tree
ID WEIGHT   TYPE NAME       UP/DOWN REWEIGHT PRIMARY-AFFINITY 
-9  0.90579 root ssd                                          
-6  0.45380     host OSD-20                                   
 4  0.45380         osd.4        up  1.00000          1.00000 
-7  0.45200     host OSD-21                                   
 5  0.45200         osd.5        up  1.00000          1.00000 
-8 58.16077 root hdd                                          
-2 14.54019     host OSD-0                                    
 0 14.54019         osd.0        up  1.00000          1.00000 
-3 14.54019     host OSD-1                                    
 1 14.54019         osd.1        up  1.00000          1.00000 
-4 14.54019     host OSD-2                                    
 2 14.54019         osd.2        up  1.00000          1.00000 
-5 14.54019     host OSD-3                                    
 3 14.54019         osd.3        up  1.00000          1.00000 
-1        0 root default 

* 위와 같이 진행하게 되면 정상적으로 버킷리스트들이 보이긴 하지만 동기화등 에러등으로 warn 에서 err 로 변함.

[root@MGMT10:02:34:~]# ceph -s
    cluster 427f2e6a-5722-4365-a475-8fcdc218a418
     health HEALTH_WARN
            128 pgs stuck unclean
            too few PGs per OSD (21 < min 30)
     monmap e2: 4 mons at {MON-0=192.168.1.13:6789/0,MON-1=192.168.1.14:6789/0,MON-2=192.168.1.15:6789/0,MON-3=192.168.1.16:6789/0}
            election epoch 6, quorum 0,1,2,3 MON-0,MON-1,MON-2,MON-3
     osdmap e61: 6 osds: 6 up, 6 in; 128 remapped pgs
            flags sortbitwise,require_jewel_osds
      pgmap v186: 256 pgs, 2 pools, 0 bytes data, 0 objects
            652 MB used, 60483 GB / 60484 GB avail
                 128 active+remapped
============================================================================================

* osd를 타입별로 분류 하고 상태 값 확인 하니 경고 상태. 이유는 최상위 버킷 타입으로 되어 있는 "default" 가 자리 잡고 있기 때문.
  해결 방법은  default 버킷을 제거 하던가 ssd, hdd bucket들을 하위로 넣어 줘야 됨. 하지만 해당 jewel 10버전에서는 default가 명령어로는 제거가 안되기 때문에 명령어로는 하위로 넣고, 제거를 하려면 crushtool을 이용해 crushmap을 밀어 넣어야함. crushmap은 url=crushmap사용방법(링크) 에서 확인.

[root@MGMT10:12:05:~]# ceph osd crush move hdd root=default
moved item id -8 name 'hdd' to location {root=default} in crush map
[root@MGMT10:18:12:~]# ceph osd crush move ssd root=default
moved item id -9 name 'ssd' to location {root=default} in crush map
[root@MGMT10:18:19:~]# ceph osd tree
ID WEIGHT   TYPE NAME           UP/DOWN REWEIGHT PRIMARY-AFFINITY 
-1 59.06656 root default                                          
-8 58.16077     root hdd                                          
-2 14.54019         host OSD-0                                    
 0 14.54019             osd.0        up  1.00000          1.00000 
-3 14.54019         host OSD-1                                    
 1 14.54019             osd.1        up  1.00000          1.00000 
-4 14.54019         host OSD-2                                    
 2 14.54019             osd.2        up  1.00000          1.00000 
-5 14.54019         host OSD-3                                    
 3 14.54019             osd.3        up  1.00000          1.00000 
-9  0.90579     root ssd                                          
-6  0.45380         host OSD-20                                   
 4  0.45380             osd.4        up  1.00000          1.00000 
-7  0.45200         host OSD-21                                   
 5  0.45200             osd.5        up  1.00000          1.00000 


[root@MGMT10:18:22:~]# ceph -s
    cluster 427f2e6a-5722-4365-a475-8fcdc218a418
     health HEALTH_OK
     monmap e2: 4 mons at {MON-0=192.168.1.13:6789/0,MON-1=192.168.1.14:6789/0,MON-2=192.168.1.15:6789/0,MON-3=192.168.1.16:6789/0}
            election epoch 6, quorum 0,1,2,3 MON-0,MON-1,MON-2,MON-3
     osdmap e73: 6 osds: 6 up, 6 in
            flags sortbitwise,require_jewel_osds
      pgmap v219: 256 pgs, 2 pools, 0 bytes data, 0 objects
            659 MB used, 60483 GB / 60484 GB avail
                 128 active+clean



  • Share:

You Might Also Like

0 개의 댓글