|
| 1 | +# Sử dụng Ceph như Block Device trên CentOS 7 |
| 2 | +--- |
| 3 | +## Chuẩn bị |
| 4 | +Sử dụng lab: [Cài đặt Ceph Storage Cluster trên CentOS 7](ceph-install-lab.md) |
| 5 | + |
| 6 | +## Bắt đầu |
| 7 | +### Phần 1: Cấu hình Ceph Client Node |
| 8 | +> Ta sẽ cấu hình CentOS 7 như Ceph client |
| 9 | +
|
| 10 | +#### Bước 1: Cấu hình Client Node |
| 11 | +Truy cập Ceph client node |
| 12 | +``` |
| 13 | +ssh root@client |
| 14 | +``` |
| 15 | +Tạo Ceph user 'cephuser' trên tất các các nodes. |
| 16 | +``` |
| 17 | +useradd -d /home/cephuser -m cephuser |
| 18 | +passwd cephuser |
| 19 | +``` |
| 20 | +Cấp quyền root cho user vừa tạo |
| 21 | +``` |
| 22 | +echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser |
| 23 | +chmod 0440 /etc/sudoers.d/cephuser |
| 24 | +sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers |
| 25 | +``` |
| 26 | +#### Bước 2: Cấu hình NTP |
| 27 | +Sử dụng NTP đồng bộ thời gian trên tất cả các Node. |
| 28 | +> Ở đây sử dụng NTP pool US. |
| 29 | +
|
| 30 | +``` |
| 31 | +yum install -y ntp ntpdate ntp-doc |
| 32 | +ntpdate 0.us.pool.ntp.org |
| 33 | +hwclock --systohc |
| 34 | +systemctl enable ntpd.service |
| 35 | +systemctl start ntpd.service |
| 36 | +``` |
| 37 | + |
| 38 | +#### Bước 3: Cấu hình file host |
| 39 | +``` |
| 40 | +vim /etc/hosts |
| 41 | +
|
| 42 | +# content |
| 43 | +192.168.2.128 ceph-admin |
| 44 | +192.168.2.129 mon1 |
| 45 | +192.168.2.130 osd1 |
| 46 | +192.168.2.131 osd2 |
| 47 | +192.168.2.132 client |
| 48 | +``` |
| 49 | + |
| 50 | +### Phần 2: Cấu hình tại Ceph Admin Node |
| 51 | +Sử dụng ceph-admin node để thiết lập Ceph client node |
| 52 | +#### Bước 1: Truy cập Ceph admin node |
| 53 | +``` |
| 54 | +ssh root@ceph-admin |
| 55 | +``` |
| 56 | + |
| 57 | +#### Bước 2: Kiểm tra cấu hình ssh config, host file |
| 58 | +Kiểm tra cấu hình file ssh config |
| 59 | +``` |
| 60 | +vim ~/.ssh/config |
| 61 | +
|
| 62 | +# Thêm nếu chưa có |
| 63 | +Host client |
| 64 | + Hostname client |
| 65 | + User cephuser |
| 66 | +
|
| 67 | +
|
| 68 | +vim /etc/hosts |
| 69 | +
|
| 70 | +# Thêm nếu chưa có |
| 71 | +192.168.2.132 client |
| 72 | +``` |
| 73 | + |
| 74 | +Kiểm tra, thiết lập ssh với client |
| 75 | +``` |
| 76 | +ssh-keyscan client >> ~/.ssh/known_hosts |
| 77 | +ssh-copy-id client |
| 78 | +``` |
| 79 | + |
| 80 | +Kiểm tra kết nối tới client |
| 81 | +``` |
| 82 | +ssh client |
| 83 | +``` |
| 84 | +> Nhập passwd khi lần đàu truy cập |
| 85 | +
|
| 86 | +### Phần 3: Cài đặt Ceph tại Client Node |
| 87 | +> Cài đặt Ceph tới Client Node bằng ceph-admin node |
| 88 | +
|
| 89 | +#### Bước 1: Truy cập ceph-admin |
| 90 | +``` |
| 91 | +ssh root@ceph-admin |
| 92 | +``` |
| 93 | +#### Bước 2: Truy cập Cluster directory |
| 94 | +``` |
| 95 | +cd cluster/ |
| 96 | +``` |
| 97 | + |
| 98 | +#### Bước 3: Cài đặt Ceph trên client = ceph-admin |
| 99 | +``` |
| 100 | +ceph-deploy install client |
| 101 | +ceph-deploy admin client |
| 102 | +``` |
| 103 | + |
| 104 | +#### Bước 4: Cấu hình quyển truy cập admin key (Tại client node) |
| 105 | +``` |
| 106 | +ssh client |
| 107 | +sudo chmod 644 /etc/ceph/ceph.client.admin.keyring |
| 108 | +``` |
| 109 | + |
| 110 | + |
| 111 | + |
| 112 | +### Phần 4: Cấu hình, Mount Ceph như Block Device |
| 113 | +> Ceph cho phép sử dụng Ceph Cluster cung cấp block device. Ta có thể sử dụng Ceph storage như hard drive thông thường. Ceph Block Storage hoặc Ceph RADOS Block Storage (RBD) lưu block device image như Object. Tự động nhận bản obj đó tới toàn Ceph Cluster. |
| 114 | +
|
| 115 | +#### Thiết lập tại Ceph Client |
| 116 | +Truy cập Client Node |
| 117 | +``` |
| 118 | +ssh client |
| 119 | +``` |
| 120 | +Sử dụng RBD cmd quản lý rados block device image. Cmd cho phép tạo mới image, resize, tạo snapshot, .. |
| 121 | +``` |
| 122 | +rbd create disk01 --size 10000 |
| 123 | +rbd ls -l |
| 124 | +``` |
| 125 | + |
| 126 | +Kích hoạt RBD kernel module |
| 127 | +``` |
| 128 | +sudo modprobe rbd |
| 129 | +sudo rbd feature disable disk01 exclusive-lock object-map fast-diff deep-flatten |
| 130 | +``` |
| 131 | +Map disk01 image tới block device thông qua rbd kernel module |
| 132 | +``` |
| 133 | +sudo rbd map disk01 |
| 134 | +rbd showmapped |
| 135 | +``` |
| 136 | + |
| 137 | + |
| 138 | +> disk01 image được map tới /dev/rbd0, từ đây ta có thể sử dụng nó như ổ đĩa thông thường |
| 139 | +
|
| 140 | +Định dạng XFS cho ổ đĩa |
| 141 | +``` |
| 142 | +sudo mkfs.xfs /dev/rbd0 |
| 143 | +``` |
| 144 | + |
| 145 | +Mount '/dev/rbd0' tới mnt directory. |
| 146 | +``` |
| 147 | +sudo mkdir -p /mnt/mydisk |
| 148 | +sudo mount /dev/rbd0 /mnt/mydisk |
| 149 | +``` |
| 150 | + |
| 151 | + |
| 152 | + |
| 153 | +> Ceph RBD or RADOS Block Device đã được cấu hình và mount vào hệ thông. Kiểm tra thông quá command |
| 154 | +
|
| 155 | +Kiểm tra lại kết quả |
| 156 | +``` |
| 157 | +df -hT |
| 158 | +``` |
| 159 | + |
| 160 | + |
| 161 | +### Phần 5: Thiết lập RBD tại thời điểm khởi động |
| 162 | +#### Bước 1: Tạo file tại đường dẫn /usr/local/bin thực hiện hoạt động mount hoặc umount |
| 163 | +``` |
| 164 | +cd /usr/local/bin/ |
| 165 | +vim rbd-mount |
| 166 | +
|
| 167 | +# content |
| 168 | +#!/bin/bash |
| 169 | +
|
| 170 | +# Script Author: http://bryanapperson.com/ |
| 171 | +# Change with your pools name |
| 172 | +export poolname=rbd |
| 173 | +
|
| 174 | +# CHange with your disk image name |
| 175 | +export rbdimage=disk01 |
| 176 | +
|
| 177 | +# Mount Directory |
| 178 | +export mountpoint=/mnt/mydisk |
| 179 | +
|
| 180 | +# Image mount/unmount and pool are passed from the systems service as arguments |
| 181 | +# Determine if we are mounting or unmounting |
| 182 | +if [ "$1" == "m" ]; then |
| 183 | + modprobe rbd |
| 184 | + rbd feature disable $rbdimage exclusive-lock object-map fast-diff deep-flatten |
| 185 | + rbd map $rbdimage --id admin --keyring /etc/ceph/ceph.client.admin.keyring |
| 186 | + mkdir -p $mountpoint |
| 187 | + mount /dev/rbd/$poolname/$rbdimage $mountpoint |
| 188 | +fi |
| 189 | +if [ "$1" == "u" ]; then |
| 190 | + umount $mountpoint |
| 191 | + rbd unmap /dev/rbd/$poolname/$rbdimage |
| 192 | +fi |
| 193 | +``` |
| 194 | +Thêm quyền kịch hoạt |
| 195 | +``` |
| 196 | +chmod +x rbd-mount |
| 197 | +``` |
| 198 | + |
| 199 | +Bước 2: Tạo service cho CentOS 7, tự động khởi tạo khi khởi động |
| 200 | +Tới systemd directory, tại service file |
| 201 | +``` |
| 202 | +cd /etc/systemd/system/ |
| 203 | +vim rbd-mount.service |
| 204 | +
|
| 205 | +# content |
| 206 | +[Unit] |
| 207 | +Description=RADOS block device mapping for $rbdimage in pool $poolname" |
| 208 | +Conflicts=shutdown.target |
| 209 | +Wants=network-online.target |
| 210 | +After=NetworkManager-wait-online.service |
| 211 | +[Service] |
| 212 | +Type=oneshot |
| 213 | +RemainAfterExit=yes |
| 214 | +ExecStart=/usr/local/bin/rbd-mount m |
| 215 | +ExecStop=/usr/local/bin/rbd-mount u |
| 216 | +[Install] |
| 217 | +WantedBy=multi-user.target |
| 218 | +``` |
| 219 | + |
| 220 | +Thiết lập service vừa tạo |
| 221 | +``` |
| 222 | +systemctl daemon-reload |
| 223 | +systemctl enable rbd-mount.service |
| 224 | +``` |
| 225 | + |
| 226 | +## Nguồn |
| 227 | +https://www.howtoforge.com/tutorial/using-ceph-as-block-device-on-centos-7/ |
0 commit comments