ನಾವು ಏನು ಮಾತನಾಡುತ್ತೇವೆ:
drbd+ocfs2 ಪರಿಹಾರಗಳನ್ನು ಆಧರಿಸಿ ಎರಡು ಸರ್ವರ್ಗಳಿಗೆ ಹಂಚಿದ ಸಂಗ್ರಹಣೆಯನ್ನು ತ್ವರಿತವಾಗಿ ನಿಯೋಜಿಸುವುದು ಹೇಗೆ.
ಇದು ಯಾರಿಗೆ ಉಪಯುಕ್ತವಾಗಿದೆ:
ಟ್ಯುಟೋರಿಯಲ್ ಸಿಸ್ಟಮ್ ನಿರ್ವಾಹಕರಿಗೆ ಮತ್ತು ಶೇಖರಣಾ ಅನುಷ್ಠಾನ ವಿಧಾನವನ್ನು ಆಯ್ಕೆ ಮಾಡುವ ಅಥವಾ ಪರಿಹಾರವನ್ನು ಪ್ರಯತ್ನಿಸಲು ಬಯಸುವವರಿಗೆ ಉಪಯುಕ್ತವಾಗಿರುತ್ತದೆ.
ನಾವು ಯಾವ ನಿರ್ಧಾರಗಳನ್ನು ನಿರಾಕರಿಸಿದ್ದೇವೆ ಮತ್ತು ಏಕೆ?
ಸಾಮಾನ್ಯವಾಗಿ ನಾವು ಸಣ್ಣ ವೆಬ್ ಕ್ಲಸ್ಟರ್ನಲ್ಲಿ ಉತ್ತಮ ಓದುವಿಕೆ-ಬರೆಯುವ ಕಾರ್ಯಕ್ಷಮತೆಯೊಂದಿಗೆ ಹಂಚಿಕೆಯ ಸಂಗ್ರಹಣೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬೇಕಾದ ಪರಿಸ್ಥಿತಿಯನ್ನು ಎದುರಿಸುತ್ತೇವೆ. ನಮ್ಮ ಯೋಜನೆಗಳಿಗೆ ಹಂಚಿಕೆಯ ಸಂಗ್ರಹಣೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ನಾವು ವಿವಿಧ ಆಯ್ಕೆಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿದ್ದೇವೆ, ಆದರೆ ಕೆಲವರು ಏಕಕಾಲದಲ್ಲಿ ಹಲವಾರು ಸೂಚಕಗಳಲ್ಲಿ ನಮ್ಮನ್ನು ತೃಪ್ತಿಪಡಿಸಲು ಸಮರ್ಥರಾಗಿದ್ದಾರೆ. ಏಕೆ ಎಂದು ಈಗ ನಾವು ನಿಮಗೆ ಹೇಳುತ್ತೇವೆ.
- ಗ್ಲುಸ್ಟರ್ಫ್ಗಳು ಓದುವ ಮತ್ತು ಬರೆಯುವ ಕಾರ್ಯಕ್ಷಮತೆಯೊಂದಿಗೆ ನಮ್ಮನ್ನು ತೃಪ್ತಿಪಡಿಸಲಿಲ್ಲ; ಹೆಚ್ಚಿನ ಸಂಖ್ಯೆಯ ಫೈಲ್ಗಳನ್ನು ಏಕಕಾಲದಲ್ಲಿ ಓದುವಲ್ಲಿ ಸಮಸ್ಯೆಗಳಿವೆ ಮತ್ತು CPU ನಲ್ಲಿ ಹೆಚ್ಚಿನ ಹೊರೆ ಇತ್ತು. ಫೈಲ್ಗಳನ್ನು ಓದುವ ಸಮಸ್ಯೆಯನ್ನು ಇಟ್ಟಿಗೆಯಿಂದ ನೇರವಾಗಿ ಪ್ರವೇಶಿಸುವ ಮೂಲಕ ಪರಿಹರಿಸಬಹುದು, ಆದರೆ ಇದು ಯಾವಾಗಲೂ ಅನ್ವಯಿಸುವುದಿಲ್ಲ ಮತ್ತು ಸಾಮಾನ್ಯವಾಗಿ ತಪ್ಪಾಗಿದೆ.
- Ceph ಅತಿಯಾದ ಸಂಕೀರ್ಣತೆಯನ್ನು ಇಷ್ಟಪಡಲಿಲ್ಲ, ಇದು 2-4 ಸರ್ವರ್ಗಳೊಂದಿಗೆ ಯೋಜನೆಗಳಲ್ಲಿ ಹಾನಿಕಾರಕವಾಗಬಹುದು, ವಿಶೇಷವಾಗಿ ಯೋಜನೆಯನ್ನು ತರುವಾಯ ನಿರ್ವಹಿಸಿದರೆ. ಮತ್ತೊಮ್ಮೆ, ಗ್ಲುಸ್ಟರ್ಫ್ಗಳಂತೆ ಪ್ರತ್ಯೇಕ ಶೇಖರಣಾ ಕ್ಲಸ್ಟರ್ಗಳನ್ನು ನಿರ್ಮಿಸಲು ನಮ್ಮನ್ನು ಒತ್ತಾಯಿಸುವ ಗಂಭೀರ ಕಾರ್ಯಕ್ಷಮತೆಯ ಮಿತಿಗಳಿವೆ.
- ಹಂಚಿಕೆಯ ಸಂಗ್ರಹಣೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಒಂದು NFS ಸರ್ವರ್ ಅನ್ನು ಬಳಸುವುದು ದೋಷ ಸಹಿಷ್ಣುತೆಯ ವಿಷಯದಲ್ಲಿ ಪ್ರಶ್ನೆಗಳನ್ನು ಹುಟ್ಟುಹಾಕುತ್ತದೆ.
- s3 ಒಂದು ನಿರ್ದಿಷ್ಟ ಶ್ರೇಣಿಯ ಕಾರ್ಯಗಳಿಗೆ ಅತ್ಯುತ್ತಮವಾದ ಜನಪ್ರಿಯ ಪರಿಹಾರವಾಗಿದೆ, ಆದರೆ ಇದು ಫೈಲ್ ಸಿಸ್ಟಮ್ ಅಲ್ಲ, ಅದು ಅದರ ವ್ಯಾಪ್ತಿಯನ್ನು ಕಿರಿದಾಗಿಸುತ್ತದೆ.
- lsyncd. ನಾವು ಈಗಾಗಲೇ "ಫೈಲ್-ಅಲ್ಲದ ವ್ಯವಸ್ಥೆಗಳ" ಬಗ್ಗೆ ಮಾತನಾಡಲು ಪ್ರಾರಂಭಿಸಿದರೆ, ಈ ಜನಪ್ರಿಯ ಪರಿಹಾರದ ಮೇಲೆ ಹೋಗುವುದು ಯೋಗ್ಯವಾಗಿದೆ. ದ್ವಿಮುಖ ವಿನಿಮಯಕ್ಕೆ ಇದು ಸೂಕ್ತವಲ್ಲ (ಆದರೆ ನೀವು ನಿಜವಾಗಿಯೂ ಬಯಸಿದರೆ, ಆಗ ನೀವು ಮಾಡಬಹುದು), ಇದು ಹೆಚ್ಚಿನ ಸಂಖ್ಯೆಯ ಫೈಲ್ಗಳಲ್ಲಿ ಸ್ಥಿರವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದಿಲ್ಲ. ಇಡೀ ವಿಷಯಕ್ಕೆ ಉತ್ತಮವಾದ ಸೇರ್ಪಡೆಯೆಂದರೆ ಅದು ಏಕ-ಥ್ರೆಡ್ ಆಗಿದೆ. ಕಾರಣ ಪ್ರೋಗ್ರಾಂನ ಆರ್ಕಿಟೆಕ್ಚರ್ನಲ್ಲಿದೆ: ಇದು ಕೆಲಸದ ವಸ್ತುಗಳನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲು ಇನೋಟಿಫೈ ಅನ್ನು ಬಳಸುತ್ತದೆ, ಇದು ಪ್ರಾರಂಭದಲ್ಲಿ ಮತ್ತು ಮರುಸ್ಕ್ಯಾನಿಂಗ್ ಸಮಯದಲ್ಲಿ ನಿಯೋಜಿಸುತ್ತದೆ. rsync ಅನ್ನು ವರ್ಗಾವಣೆ ಮಾಧ್ಯಮವಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ.
ಟ್ಯುಟೋರಿಯಲ್: drbd+ocfs2 ಆಧರಿಸಿ ಹಂಚಿಕೆಯ ಸಂಗ್ರಹಣೆಯನ್ನು ಹೇಗೆ ನಿಯೋಜಿಸುವುದು
ನಮಗೆ ಅತ್ಯಂತ ಅನುಕೂಲಕರ ಪರಿಹಾರವೆಂದರೆ ಲಿಂಕ್ ocfs2+drbd. ಪರಿಹಾರ ಡೇಟಾಬೇಸ್ನ ಆಧಾರದ ಮೇಲೆ ಎರಡು ಸರ್ವರ್ಗಳಿಗಾಗಿ ನೀವು ಹಂಚಿದ ಸಂಗ್ರಹಣೆಯನ್ನು ತ್ವರಿತವಾಗಿ ಹೇಗೆ ನಿಯೋಜಿಸಬಹುದು ಎಂಬುದನ್ನು ಈಗ ನಾವು ನಿಮಗೆ ತಿಳಿಸುತ್ತೇವೆ. ಆದರೆ ಮೊದಲು, ಘಟಕಗಳ ಬಗ್ಗೆ ಸ್ವಲ್ಪ:
DRBD - ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಲಿನಕ್ಸ್ ವಿತರಣೆಯಿಂದ ಶೇಖರಣಾ ವ್ಯವಸ್ಥೆಯು ಬ್ಲಾಕ್ಗಳಲ್ಲಿ ಸರ್ವರ್ಗಳ ನಡುವೆ ಡೇಟಾವನ್ನು ಪುನರಾವರ್ತಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ದೋಷ-ಸಹಿಷ್ಣು ಸಂಗ್ರಹಣೆಯನ್ನು ನಿರ್ಮಿಸುವುದು ಮುಖ್ಯ ಅಪ್ಲಿಕೇಶನ್ ಆಗಿದೆ.
OCFS2 - ಹಲವಾರು ಸಿಸ್ಟಮ್ಗಳಿಂದ ಒಂದೇ ಸಂಗ್ರಹಣೆಯ ಹಂಚಿಕೆಯ ಬಳಕೆಯನ್ನು ಒದಗಿಸುವ ಫೈಲ್ ಸಿಸ್ಟಮ್. ಲಿನಕ್ಸ್ ವಿತರಣೆಯಲ್ಲಿ ಸೇರಿಸಲಾಗಿದೆ ಮತ್ತು ಇದು ಕರ್ನಲ್ ಮಾಡ್ಯೂಲ್ ಮತ್ತು ಎಫ್ಎಸ್ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಬಳಕೆದಾರರ ಸ್ಥಳ ಸಾಧನವಾಗಿದೆ. OCFS2 ಅನ್ನು DRBD ಮೂಲಕ ಮಾತ್ರವಲ್ಲದೆ iSCSI ಯ ಮೂಲಕವೂ ಬಹು ಸಂಪರ್ಕಗಳೊಂದಿಗೆ ಬಳಸಬಹುದು. ನಮ್ಮ ಉದಾಹರಣೆಯಲ್ಲಿ ನಾವು DRBD ಅನ್ನು ಬಳಸುತ್ತೇವೆ.
ಎಲ್ಲಾ ಕ್ರಿಯೆಗಳನ್ನು ಉಬುಂಟು ಸರ್ವರ್ 18.04 ನಲ್ಲಿ ಕನಿಷ್ಠ ಸಂರಚನೆಯಲ್ಲಿ ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ.
ಹಂತ 1. DRBD ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ:
/etc/drbd.d/drbd0.res ಫೈಲ್ನಲ್ಲಿ ನಾವು ನಮ್ಮ ವರ್ಚುವಲ್ ಬ್ಲಾಕ್ ಸಾಧನ /dev/drbd0 ಅನ್ನು ವಿವರಿಸುತ್ತೇವೆ:
resource drbd0 {
syncer { rate 1000M; }
net {
allow-two-primaries;
after-sb-0pri discard-zero-changes;
after-sb-1pri discard-secondary;
after-sb-2pri disconnect;
}
startup { become-primary-on both; }
on drbd1 {
meta-disk internal;
device /dev/drbd0;
disk /dev/vdb1;
address 10.10.10.192:7789;
}
on drbd2 {
meta-disk internal;
device /dev/drbd0;
disk /dev/vdb1;
address 10.10.10.193:7789;
}
}
ಮೆಟಾ-ಡಿಸ್ಕ್ ಆಂತರಿಕ — ಮೆಟಾಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಲು ಅದೇ ಬ್ಲಾಕ್ ಸಾಧನಗಳನ್ನು ಬಳಸಿ
ಸಾಧನ /dev/drbd0 — drbd ಪರಿಮಾಣದ ಮಾರ್ಗವಾಗಿ /dev/drbd0 ಅನ್ನು ಬಳಸಿ.
disk /dev/vdb1 - /dev/vdb1 ಬಳಸಿ
ಸಿನ್ಸರ್ {ದರ 1000M; } - ಗಿಗಾಬಿಟ್ ಚಾನಲ್ ಬ್ಯಾಂಡ್ವಿಡ್ತ್ ಬಳಸಿ
ಅವಕಾಶ-ಎರಡು-ಪ್ರಾಥಮಿಕ - ಎರಡು ಪ್ರಾಥಮಿಕ ಸರ್ವರ್ಗಳಲ್ಲಿ ಬದಲಾವಣೆಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಅನುಮತಿಸುವ ಪ್ರಮುಖ ಆಯ್ಕೆ
ನಂತರ-sb-0pri, ನಂತರ-sb-1pri, ನಂತರ-sb-2pri - ಸ್ಪ್ಲಿಟ್ಬ್ರೇನ್ ಪತ್ತೆಯಾದಾಗ ನೋಡ್ನ ಕ್ರಿಯೆಗಳಿಗೆ ಜವಾಬ್ದಾರಿಯುತ ಆಯ್ಕೆಗಳು. ಹೆಚ್ಚಿನ ವಿವರಗಳನ್ನು ದಸ್ತಾವೇಜನ್ನು ಕಾಣಬಹುದು.
ಎರಡರಲ್ಲೂ ಪ್ರಾಥಮಿಕವಾಗಿ - ಎರಡೂ ನೋಡ್ಗಳನ್ನು ಪ್ರಾಥಮಿಕಕ್ಕೆ ಹೊಂದಿಸುತ್ತದೆ.
ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ, ನಾವು 10 ಗಿಗಾಬಿಟ್ಗಳ ಥ್ರೋಪುಟ್ನೊಂದಿಗೆ ಮೀಸಲಾದ ವರ್ಚುವಲ್ ನೆಟ್ವರ್ಕ್ನೊಂದಿಗೆ ಸಂಪೂರ್ಣವಾಗಿ ಒಂದೇ ರೀತಿಯ ಎರಡು VM ಗಳನ್ನು ಹೊಂದಿದ್ದೇವೆ.
ನಮ್ಮ ಉದಾಹರಣೆಯಲ್ಲಿ, ಎರಡು ಕ್ಲಸ್ಟರ್ ನೋಡ್ಗಳ ನೆಟ್ವರ್ಕ್ ಹೆಸರುಗಳು drbd1 ಮತ್ತು drbd2. ಸರಿಯಾದ ಕಾರ್ಯಾಚರಣೆಗಾಗಿ, ನೀವು ಹೋಸ್ಟ್ಗಳ ಹೆಸರುಗಳು ಮತ್ತು IP ವಿಳಾಸಗಳನ್ನು /etc/hosts ನಲ್ಲಿ ಹೊಂದಿಸಬೇಕಾಗುತ್ತದೆ.
10.10.10.192 drbd1
10.10.10.193 drbd2
ಹಂತ 2. ನೋಡ್ಗಳನ್ನು ಹೊಂದಿಸಿ:
ಎರಡೂ ಸರ್ವರ್ಗಳಲ್ಲಿ ನಾವು ನಡೆಸುತ್ತೇವೆ:
drbdadm create-md drbd0
modprobe drbd
drbdadm up drbd0
cat /proc/drbd
ನಾವು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಪಡೆಯುತ್ತೇವೆ:
ನೀವು ಸಿಂಕ್ರೊನೈಸೇಶನ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಬಹುದು. ಮೊದಲ ನೋಡ್ನಲ್ಲಿ ನೀವು ಕಾರ್ಯಗತಗೊಳಿಸಬೇಕಾಗಿದೆ:
drbdadm primary --force drbd0
ಸ್ಥಿತಿಯನ್ನು ನೋಡೋಣ:
cat /proc/drbd
ಅದ್ಭುತವಾಗಿದೆ, ಸಿಂಕ್ರೊನೈಸೇಶನ್ ಪ್ರಾರಂಭವಾಗಿದೆ. ನಾವು ಕೊನೆಯವರೆಗೂ ಕಾಯುತ್ತೇವೆ ಮತ್ತು ಚಿತ್ರವನ್ನು ನೋಡುತ್ತೇವೆ:
ಹಂತ 3. ಎರಡನೇ ನೋಡ್ನಲ್ಲಿ ಸಿಂಕ್ರೊನೈಸೇಶನ್ ಪ್ರಾರಂಭಿಸಿ:
drbdadm primary --force drbd0
ನಾವು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಪಡೆಯುತ್ತೇವೆ:
ಈಗ ನಾವು ಎರಡು ಸರ್ವರ್ಗಳಿಂದ drbd ಗೆ ಬರೆಯಬಹುದು.
ಹಂತ 4. ocfs2 ಅನ್ನು ಸ್ಥಾಪಿಸಿ ಮತ್ತು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ.
ನಾವು ಸಾಕಷ್ಟು ಕ್ಷುಲ್ಲಕ ಸಂರಚನೆಯನ್ನು ಬಳಸುತ್ತೇವೆ:
cluster:
node_count = 2
name = ocfs2cluster
node:
number = 1
cluster = ocfs2cluster
ip_port = 7777
ip_address = 10.10.10.192
name = drbd1
node:
number = 2
cluster = ocfs2cluster
ip_port = 7777
ip_address = 10.10.10.193
name = drbd2
ಅದನ್ನು ಬರೆಯಬೇಕಾಗಿದೆ /etc/ocfs2/cluster.conf ಎರಡೂ ನೋಡ್ಗಳಲ್ಲಿ.
ನಾವು ಯಾವುದೇ ನೋಡ್ನಲ್ಲಿ drbd0 ನಲ್ಲಿ FS ಅನ್ನು ರಚಿಸುತ್ತೇವೆ:
mkfs.ocfs2 -L "testVol" /dev/drbd0
ಇಲ್ಲಿ ನಾವು ಡೀಫಾಲ್ಟ್ ನಿಯತಾಂಕಗಳನ್ನು ಬಳಸಿಕೊಂಡು drbd0 ನಲ್ಲಿ testVol ಲೇಬಲ್ನೊಂದಿಗೆ ಫೈಲ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ರಚಿಸಿದ್ದೇವೆ.
/etc/default/o2cb ನಲ್ಲಿ ನೀವು ಹೊಂದಿಸಬೇಕಾಗಿದೆ (ನಮ್ಮ ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ನಲ್ಲಿರುವಂತೆ)
O2CB_ENABLED=true
O2CB_BOOTCLUSTER=ocfs2cluster
ಮತ್ತು ಪ್ರತಿ ನೋಡ್ನಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಿ:
o2cb register-cluster ocfs2cluster
ನಂತರ ನಾವು ಆನ್ ಮಾಡಿ ಮತ್ತು ಆಟೋರನ್ ಮಾಡಲು ಅಗತ್ಯವಿರುವ ಎಲ್ಲಾ ಘಟಕಗಳನ್ನು ಸೇರಿಸುತ್ತೇವೆ:
systemctl enable drbd o2cb ocfs2
systemctl start drbd o2cb ocfs2
ಸೆಟಪ್ ಪ್ರಕ್ರಿಯೆಯ ಸಮಯದಲ್ಲಿ ಇವುಗಳಲ್ಲಿ ಕೆಲವು ಈಗಾಗಲೇ ಚಾಲನೆಯಲ್ಲಿವೆ.
ಹಂತ 5. ಎರಡೂ ನೋಡ್ಗಳಲ್ಲಿ fstab ಗೆ ಮೌಂಟ್ ಪಾಯಿಂಟ್ಗಳನ್ನು ಸೇರಿಸಿ:
/dev/drbd0 /media/shared ocfs2 defaults,noauto,heartbeat=local 0 0
ಡೈರೆಕ್ಟರಿ /ಮಾಧ್ಯಮ/ಹಂಚಿಕೊಂಡಿದೆ ಅದನ್ನು ಮುಂಚಿತವಾಗಿ ರಚಿಸಬೇಕು.
ಇಲ್ಲಿ ನಾವು noauto ಆಯ್ಕೆಗಳನ್ನು ಬಳಸುತ್ತೇವೆ, ಅಂದರೆ ಫೈಲ್ ಅನ್ನು ಸ್ಟಾರ್ಟ್ಅಪ್ನಲ್ಲಿ ಅಳವಡಿಸಲಾಗುವುದಿಲ್ಲ (ನಾನು systemd ಮೂಲಕ ನೆಟ್ವರ್ಕ್ ಫೈಲ್ಗಳನ್ನು ಆರೋಹಿಸಲು ಬಯಸುತ್ತೇನೆ) ಮತ್ತು heartbeat=local, ಅಂದರೆ ಪ್ರತಿ ನೋಡ್ನಲ್ಲಿ ಹೃದಯ ಬಡಿತ ಸೇವೆಯನ್ನು ಬಳಸುವುದು. ಜಾಗತಿಕ ಹೃದಯ ಬಡಿತವೂ ಇದೆ, ಇದು ದೊಡ್ಡ ಸಮೂಹಗಳಿಗೆ ಹೆಚ್ಚು ಸೂಕ್ತವಾಗಿದೆ.
ಮುಂದೆ ನೀವು ಆರೋಹಿಸಬಹುದು /ಮಾಧ್ಯಮ/ಹಂಚಿಕೊಂಡಿದೆ ಮತ್ತು ವಿಷಯ ಸಿಂಕ್ರೊನೈಸೇಶನ್ ಪರಿಶೀಲಿಸಿ.
ಮುಗಿದಿದೆ! ಪರಿಣಾಮವಾಗಿ, ನಾವು ಸ್ಕೇಲೆಬಿಲಿಟಿ ಮತ್ತು ಯೋಗ್ಯ ಕಾರ್ಯಕ್ಷಮತೆಯೊಂದಿಗೆ ಹೆಚ್ಚು ಅಥವಾ ಕಡಿಮೆ ದೋಷ-ಸಹಿಷ್ಣು ಸಂಗ್ರಹಣೆಯನ್ನು ಪಡೆಯುತ್ತೇವೆ.
ಮೂಲ: www.habr.com