ผู้เขียน หัวข้อ: Implement and configuration Highly Available LVM (HA LVM)  (อ่าน 5372 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ มนตรี บอยรักยุ้ยคนเดียว

  • Hero Member
  • *****
  • กระทู้: 5,369
  • Respect: +12
    • ดูรายละเอียด
    • โรงพยาบาลชุมชน ด่านมะขามเตี้ย
Implement and configuration Highly Available LVM (HA LVM)
« เมื่อ: มิถุนายน 13, 2010, 09:26:14 AM »
0
ใน Red Hat Enterprise Linux ตั้งแต่ version 4.5 ขึ้นไปได้มี feature ใหม่ที่สามารถทำการ implement LVM ให้สามารถใช้งานแบบ HA LVM ได้โดยไม่ต้องใช้ CLVM (อยู่ใน GFS) เข้ามาช่วย

ในความเป็นจริงแล้วการใช้งาน LVM นั้นจะต้องมีโหนดใดโหนดหนึ่งเท่านั้นที่สามารถใช้งานได้ ถ้ามีโหนดมากกว่าหนึ่งโหนดเข้าไป access ข้อมูลใน VG เดียวกันจะทำให้เกิด metadata corrupt ขึ้นมา ดังนั้น HA LVM เป็นเพียงการช่วยให้เราสามารถใช้งาน VG เดิมได้ในตอนที่ เครื่องที่มี VG นั้นอยู่เกิด down ไป ในเรื่องของการตรวจสอบการทำงานของ VG นั้นจะเป็นหน้่าที่ของ rgmanager เพื่อให้ VG ใด VG หนึ่ง active เพียง VG เดียว

เอ้อ ลืมบอกไปว่าการ configure HA LVM นี้จะต้องให้ 1 VG มี 1 LV ที่ทำ HA LVM เท่านั้น เพราะว่าถ้ามีหลาย LV อาจจะทำให้เกิดการแย่งกัน update metadata ซึ่งจะทำให้เกิด metadata corrupt ขึ้นได้ อีกอย่าง อย่า!! ทำการ active VG เดียวกันพร้อมกันทั้ง 2 เครื่องโดยให้ Active LV คนละตัวกัน ถ้าคิดว่าทำไมมันยุ่งยากอย่างงี้ลองไปศึกษา CLVM แทนดูนะครับ เพราะว่าเจ้าตัวนี้ไม่ต้องมาคอนฟงคอนฟิกให้เสียเวลา

ในการติดตั้งใช้งาน HA LVM นี้สิ่งที่ต้องใช้มี เครื่อง 2 เครื่อง และ SAN หรือ NAS ที่เป็น Shared storage สำหรับให้เครื่องทั้งสองเข้าไปใช้งาน HDD ร่วมกันได้ ซึ่งก็เป็น concept เดียวกับ HA Cluster ทั้วไปสามารถอ่านเพิ่มเติมได้ที่ Linux Cluster Concept [Fail-Over and Load-Balancing Cluster]


การ set up LVM Failover นั้นสามารถที่จะทำตามขั้นตอนข้างล่างดังต่อไปนี้

1. สร้าง logical volume และ filesystem โดยที่ต้องมีเพียง 1 logical volume ที่ถูกอนุญาติให้ใช้งานได้ใน volume group ที่ทำ HA LVM ดังตัวอย่าง

#pvcreate /dev/sd[cde]1
#vgcreate <ชื่อ volume group> /dev/sd[cde]1
#lvcreate -L <ขนาดของ logical volume> -n <ชื่อ logical volume> <ชื่อ volume group>
#mkfs.ext3 /dev/<ชื่อ volume group>/<ชื่อ logical volume> 
2. แก้ไขไฟล์ /etc/cluster/cluster.conf เพื่อเพิ่ม logical volume ในส่วนของ resource manager section ดังตัวอย่างด้านล่างนี้ หรือ สามารถใช้คำสั่ง system-config-cluster หรือใช้ Conga GUI.

<rm>
  <failoverdomains>
    <failoverdomain name="FD" ordered="1" restricted="0">
      <failoverdomainnode name="cluster-lvm-01" priority="1"/>
      <failoverdomainnode name="cluster-lvm-02" priority="2"/>
    </failoverdomain>
  </failoverdomains>
  <resources>
    <lvm name="lvm" vg_name="<ชื่อ volume group>" lv_name="<ชื่อ logical volume>"!  />
    <fs name="FS" device="/dev/<ชื่อ volume group>/<ชื่อ logical volume>"
force_fsck="0" force_unmount="1" fsid="64050" fstype="ext3"
mountpoint="/mnt" options="" self_fence="0"/>
  </resources>
  <service autostart="1" domain="FD" name="serv" recovery="relocate">
    <lvm ref="lvm"/>
    <fs ref="FS"/>
  </service>
</rm>
3.แก้ไข volume_list ที่อยู่ในไฟล์ /etc/lvm/lvm.conf. ให้ใส่ชื่อของ volume group, locking_type ให้เซ็ตเป็น 1 และ
ชื่อเครื่องที่มีอยู่ในไฟล์ /etc/cluster/cluster.conf โดยใส่ @ นำหน้าชื่อเครื่อง ดังตัวอย่างด้านล่าง:

volume_list = [ "VolGroup00", "@cluster-lvm-01" ]
ข้อควรระวัง: volume_list จะต้องเซ็ตเฉพาะ VG ที่จะใช้งานเท่านั้นไม่อย่างงั้นแล้วมันจะถูก activate ทั้งหมดที่เว็ตไว้

4.Update initrd ทุกเครื่องที่ทำ cluster ด้วยคำสั่งด้านล่าง:

#new-kernel-pkg –mkinitrd –initrdfile=/boot/initrd-`uname -r`.img –install `uname -r` –make-default

5.Reboot เครื่อง

ท้ายสุดการ configure HA VLM นี้ไม่ได้แก้ไขปัญหาได้ครบถ้วนหมดจด ถ้าเกิดปัญหาจากการเชื่อมต่อระหว่างเครื่อง server กับ SAN หรือ NAS แล้วการ configure ครั้งนี้อาจจะไม่เกิดผลเลยก็ได้ เนื่องจาก HA LVM ไม่มี feature ที่คอยจัดการด้าน Connectivity ของ SAN/NAS แต่อย่างไรปัญหาทุกอย่างก็ย่อมมีทางแก้ไขแน่นอน 555 เพื่อป้องกันการเกิดปัญหานี้ให้ใช้ feature multipath เข้ามาช่วยนั้นเอง ก็ลองไปอ่านเพิ่มเติมดูนะที่
เริ่ม11พย.2548OPD-Paperlessพร้อมHOSxPลดโลกร้อน
FF-Paperless(รพ.สค.)เริ่ม1ตค2555=100%
IPD-Lesspaper1ตค2560ระบบDmsByNeoNetwork
IPD-Paperless1พ.ค2562ระบบHOSxPXE4
ServerMTOL8.5+MDB-10.4.20,SlaveOL8.5+MDB-10.7.3
LOG=PostgreSQL11,INV=PostgreSQL11

ออฟไลน์ มนตรี บอยรักยุ้ยคนเดียว

  • Hero Member
  • *****
  • กระทู้: 5,369
  • Respect: +12
    • ดูรายละเอียด
    • โรงพยาบาลชุมชน ด่านมะขามเตี้ย
Re: ติดตั้ง device mapper multipathing บน SAN/NAS
« ตอบกลับ #1 เมื่อ: มิถุนายน 13, 2010, 09:27:09 AM »
0
เป็นบทความเก่าเอามาปัดฝุ่นใหม่ครับ เนื่องจากคิดว่าบางท่านอาจจะไม่ทราบว่าเอาไว้ืทำอะไร device-mapper multipathing มีไว้เพื่อใช้งานเพื่อทำ multipathing ควบคู่กับอุปกรณ์ที่เป็นพวก storage ครับ เช่น SAN หรือ NAS ครับ โดยเจ้าตัว device-mapper multipathing มีความสามารถที่จะทำงานในลักษณะ Load-Balance หรือ Fail-Over เพื่อใช้ในการ access storage ครับ ขอยกตัวอย่างเพื่อไม่เป็นไม่ให้งงกันไปใหม่แล้วกันนะครับ
ตัวอย่าง เรามีอุปกรณ์ SAN อยู่และการเชื่อมต่อกับอุปกรณ์จะใช้สาย Fiber 2 เส้นด้วยกัน(เพื่อป้องการเหตุที่สายอีกเส้นใช้งานไม่ได้)เมื่อเชื่อมต่อกับ Linux เรียบร้อยแล้ว Linux จะเห็น HDD จากตัว Linux เพิ่มเป็น 2 เท่าจากเดิม เนื่องจากว่ามีสาย Fiber 2 เส้นเชื่อมต่อไปยัง SAN นั้นเอง ดังนั้นถ้าเราแบ่งเนื่อที่ให้กับ Linux 1 LUN ด้วยกัน (LUN A) Linux จะเห็น HDD เป็น 2 ลูก คือ 2 ลูกของ LUN A เมื่อทำการเชคดู HDD แล้วจะพบว่ามี device sda, sdb ด้วยกัน แต่ sda และ sdb เป็น LUN เดียวกันทำให้เมื่อเวลา access จะสามารถ access ตัวใดก็ได้ ดังนั้นถ้าเรา Mount sda ขึ้นมาแต่ใช้ไปนานๆเกิดสายของ sda เสียขึ้นมาก็ไม่สามารถใช้งานได้จะต้อง Mount sdb ขึ้นมาแทน ด้วยเหตุนี้จึงมีโปรแกรมพวก multipath เกิดขึ้น เพื่อสร้าง virtual device สำหรับ sda, sdb เพื่อเป็นตัวแทนของ sda, sdb โดยที่นิยมใช้งานกันก็จะมี Option Fail-Over และ Load-Balance โดยในบทความนี้จะกล่าวถึงการ configure device-mapper multipathing แบบ Fail-Over ครับ โดยมีขั้นตอนดังนี้


แก้ไขไฟล์ /etc/multipath.conf โดยเอาใส่ comment เข้าไปดังตัวอย่างข้างล่าง

# devnode_blacklist {
#        devnode "*"
# }
ต่อจากนั้น ucomment
defaults {
multipath_tool  "/sbin/multipath -v0"
udev_dir        /dev
polling_interval 10
default_selector        "round-robin 0"
default_path_grouping_policy    failover
       default_getuid_callout  "/sbin/scsi_id -g -u -s /block/%n"
default_prio_callout    "/bin/true"
default_features        "0"
rr_min_io              100
failback                immediate
}
blacklist {
wwid 26353900f02796769
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^hd[a-z][[0-9]*]"
devnode "^cciss!c[0-9]d[0-9]*[p[0-9]*]"

}
ต่อมา Save file
จาก config ด้านบนการทำงานของ multipathed จะเป็นแบบ failover
ต่อจากนั้นพิมพ์คำสั่งตามขั้นตอนต่อไปนี้ตามลำดับ

modprobe dm-multipath
modprobe dm-round-robin
service multipathd start
multipath -v2
พิมพ์คำสั่งด้านล่างเพื่อให้เวลา reboot ใหม่ก็ยังสามารถใช้งานได้

chkconfig multipathd on

จาก config ข้างต้นระบบจะสร้าง device /dev/dm-X เมื่อ X คือ multipathed group
และถ้าต้องการ fdisk เราจะไม่สามารถ fdisk ที่ /dev/dm-X ได้ ดังนั้นจึงต้องไปทำ
fdisk กับ device จริง เช่น /dev/sda เป็นต้น
เริ่ม11พย.2548OPD-Paperlessพร้อมHOSxPลดโลกร้อน
FF-Paperless(รพ.สค.)เริ่ม1ตค2555=100%
IPD-Lesspaper1ตค2560ระบบDmsByNeoNetwork
IPD-Paperless1พ.ค2562ระบบHOSxPXE4
ServerMTOL8.5+MDB-10.4.20,SlaveOL8.5+MDB-10.7.3
LOG=PostgreSQL11,INV=PostgreSQL11