Category: Cluster & Load Balancing

  • Juju #01 – เริ่มต้นใช้งาน Juju

    Juju [1] เป็นเครื่องมือในการการออกแบบ Service Oriented Architecture และ Application Oriented Deployment [2] ทำให้การออกแบบระบบที่ซับซ้อนและการ Scale Out ทำได้ง่ายขึ้น สามารถทำงานได้ตั้งแต่ในเครื่องคอมพิวเตอร์เครื่องเดียว ไปจนถึงการทำงานบน Private Cloud และ Public Cloud

    ตัวอย่างเช่น หากต้องการระบบจัดการ Big Data ด้วย Hadoop ซึ่งประกอบด้วย Server หลายเครื่อง (Link: การติดตั้ง Hadoop อย่างง่าย) เดิมจะต้องใช้เวลาอ่านคู่มือ ทำลองติดตั้ง เมื่อได้ระบบขึ้นมาแล้ว ก็จะยังไม่สามารถใช้งานได้จริงทันที อย่างเช่น ต้องการใช้ Hadoop ในการทำเรื่อง Realtime Syslog Analytics [3] ประกอบด้วย Server จำนวนมาก ดังภาพ

    2559-11-21-10_16_18-realtime-syslog-analytics-_-juju

    วิธีการที่ทำให้ได้ระบบนี้มา ก็เพียงแค่ บอก Juju ว่าต้องการระบบอะไร แล้วสั่ง Deploy แล้วก็รอ

    2559-11-21-15_44_04-program-manager 2559-11-21-15_44_42-program-manager 2559-11-21-15_45_25-program-manager

    หลังจากนั้นก็ทำ Port Forward ด้วยคำสั่ง [4]

    sudo iptables -A PREROUTING -t nat -i ens160 -p tcp –dport 9000 -j DNAT –to 10.107.107.xxx:9000

    ก็จะสามารถใช้งานได้แล้ว

    2559-11-23-13_56_49

     

     

    Reference

    [1] https://jujucharms.com/

    [2] https://jujucharms.com/docs/stable/about-juju

    [3] https://jujucharms.com/realtime-syslog-analytics/

    [4] http://opensource.cc.psu.ac.th/Note_on_port_forwarding_to_LXD_container

  • ขั้นตอนการติดตั้ง HBase บน Hadoop อย่างง่าย

    HBase เป็น Database บน Hadoop [1]

    จากบทความ ขั้นตอนการติดตั้ง Hadoop Cluster อย่างง่าย จะได้ HDFS อยู่ที่ hdfs://192.168.1.101:9000 แล้ว ก็จะสามารถใช้ HBase บน Hadoop HDFS ได้

    ขั้นตอนการติดตั้ง

    1. โคลนเครื่องต้นฉบับ แล้วตั้ง ip address ให้เรียบร้อย เช่น 192.168.1.121
    2. ติดตั้ง HBase (mama shell)
      (mama shell)
      cd ~
      wget http://www-us.apache.org/dist/hbase/stable/hbase-1.2.3-bin.tar.gz
      tar -zxvf hbase-1.2.3-bin.tar.gz
      sudo mv hbase-1.2.3 /usr/local/hbase
      sudo chown -R hduser.hadoop /usr/local/hbase
      sudo mkdir /usr/local/zookeeper
      sudo chown -R hduser.hadoop /usr/local/zookeeper
    3. แก้ไขไฟล์ /usr/local/hbase/conf/hbase-site.xml (hduser shell)
      <configuration>
      <property>
       <name>hbase.cluster.distributed</name>
       <value>true</value>
      </property>
      <property>
       <name>hbase.rootdir</name>
       <value>hdfs://192.168.1.101:9000/hbase</value>
      </property>
       <property>
       <name>hbase.zookeeper.property.dataDir</name>
       <value>/usr/local/zookeeper</value>
       </property>
      </configuration>
    4. ขั้นตอนการ Start HBase (hduser shell)
       /usr/local/hbase/bin/start-hbase.sh
    5. ดูผลการทำงาน จาก Hadoop HDFS ว่าสร้าง /hbase แล้ว
       http://192.168.1.101:50070/explorer.html#/hbase
    6. ใช้งานผ่าน Shell ได้จากคำสั่ง (hduser shell)
       /usr/local/hbase/bin/hbase shell
    7. ขั้นตอนการ Stop HBase (hduser shell)
       /usr/local/hbase/bin/stop-hbase.sh

     

    References:

    [1] https://hbase.apache.org/

  • ขั้นตอนการติดตั้ง Hadoop Cluster อย่างง่าย

    Hadoop เป็น Framework สำหรับสร้างการประมวลผลแบบกระจาย (Distributed Processing) กับข้อมูลขนาดใหญ่ (Large Data Sets) สามารถเริ่มต้นจากทดสอบบนเครื่องคอมพิวเตอร์เครื่องเดียว ไปจนเป็นระบบ Cluster ได้[1]

    อธิบายง่ายๆได้ว่า Hadoop ประกอบด้วย ส่วนประมวลผลแบบกระจายเรียกว่า YARN (หรือ MapReduce) และ ส่วนเก็บข้อมูลแบบกระจายเรียกว่า HDFS (Hadoop Distributed File System) สำหรับการสร้าง Hadoop Cluster ในบทความนี้ใช้ Hadoop version 2.7.2 บน Ubuntu 16.04 โดย Cluster จะประกอบด้วย 1 Master และ N Slaves โดยจะใช้วิธีการสร้างเครื่องต้นฉบับ แล้ว Clone ไปเป็น Master/Slave ต่อไป

    1.ขั้นตอนการสร้างตันฉบับสำหรับการ Clone
    1.1. ติดตั้ง Ubuntu 16.04 ตามปรกติ สร้าง User คนแรกชื่อ mama
    1.2. สร้างกลุ่มชื่อ hadoop

    sudo addgroup hadoop

    1.3. สร้างผู้ใช้ชื่อ hduser อยู่ในกลุ่ม hadoop

    sudo adduser hduser --ingroup hadoop

    1.4. ติดตั้ง Java

    sudo apt-get install default-jre openjdk-8-jdk-headless

    1.5. ติดตั้ง hadoop

    wget http://www-us.apache.org/dist/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz
    tar -zxvf hadoop-2.7.2.tar.gz
    sudo mv hadoop-2.7.2 /usr/local/hadoop
    sudo mkdir /usr/local/hadoop/etc/hadoop/tmp
    sudo chown -R hduser.hadoop /usr/local/hadoop

    1.6. เพิ่มตัวแปรใน /etc/environment

    HADOOP_HOME=/usr/local/hadoop
    HADOOP_PREFIX=/usr/local/hadoop
    JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

    1.7. แก้ไขค่าใน .bashrc

    su hduser; cd ~

    แล้วแก้ไข .bashrc โดยเพิ่มบรรทัดต่อไปนี้ ท้ายไฟล์

    export HADOOP_HOME=/usr/local/hadoop
    export HADOOP_PREFIX=/usr/local/hadoop
    export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    2.ขั้นตอนการสร้าง Master (namenode)
    2.1. Clone เครื่องต้นฉบับมา แล้วแก้ไข ip address, /etc/hosts, /etc/hostname ให้เหมาะสม
    โดยเครื่องนี้ต้อง Static IP เช่น 192.168.1.101
    2.2. แก้ไข /usr/local/hadoop/etc/hadoop/core-site.xml ดังนี้

    <configuration>
    <property>
     <name>hadoop.tmp.dir</name>
     <value>/usr/local/hadoop/tmp</value>
     </property>
     <property>
     <name>fs.defaultFS</name>
     <value>hdfs://192.168.107.116:9000</value>
     </property>
    </configuration>
    

    2.3. แก้ไข /usr/local/hadoop/etc/hadoop/hdfs-site.xml

    <configuration>
     <property>
     <name>dfs.replication</name>
     <value>3</value>
     </property>
     <property>
     <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
     <value>false</value>
     </property>
    </configuration>

    2.4. แก้ไข /usr/local/hadoop/etc/hadoop/slaves

    โดยใส่ IP ของเครื่องที่จะเป็น Slave หรือ datanode ลงไป เช่น 192.168.1.102 ถึง 192.168.1.111 เป็นต้น

    192.168.1.102
    192.168.1.103
    192.168.1.104
    192.168.1.105
    192.168.1.106
    192.168.1.107
    192.168.1.108
    192.168.1.109
    192.168.1.110
    192.168.1.111
    

     

    3.ขั้นตอนการสร้าง Slave (datanode)
    3.1. Clone เครื่องต้นฉบับมา แล้วแก้ไข ip address, /etc/hosts, /etc/hostname

    เช่น ตั้ง IP เป็น 192.168.1.102
    3.2. แก้ไข /usr/local/hadoop/etc/hadoop/core-site.xml ดังนี้ (สังเกตว่า 192.168.1.101 เป็น IP Address ของเครื่อง Master)

    <configuration>
     <property>
     <name>fs.defaultFS</name>
     <value>hdfs://192.168.1.101:9000</value>
     </property>
    </configuration>

     

    4.ขั้นตอนการตั้งค่า Passwordless SSH

    ที่เครื่อง Master ใช้คำสั่งต่อไปนี้ เพื่อให้สามารถ Login ไปเป็น hduser บนเครื่อง slave ได้โดยไม่ต้องใส่รหัสผ่าน

    (hduser@master shell)
    ssh-keygen -t rsa
    ssh hduser@192.168.1.102 mkdir -p .ssh
    ssh-copy-id -i .ssh/id_rsa.pub hduser@192.168.1.102
    

    จากนั้นจะสามารถ ssh hduser@192.168.1.102 โดยไม่ต้องใส่ Password อีก แล้วหลังจากนี้ สามารถใช้เครื่อง Slave นี้เป็นต้นฉบับในการ Clone เป็น datanode ต่างๆได้ตามต้องการ

     

    5.ขั้นตอนการ Start Hadoop Cluster

    ในครั้งแรกสุด ที่เครื่อง Master ต้อง format HDFS ก่อน โดยใช้คำสั่ง (จาก hduser shell)

    hdfs namenode -format

    จากนั้นใช้คำสั่งต่อไปนี้เพื่อ start ระบบ

    start-dfs.sh
    start-yarn.sh

    6.ดูผลการทำงาน

    http://192.168.1.101:50070

    http://192.168.1.101:8088

     

    7.ขั้นตอนการ Stop Hadoop Cluster

    stop-dfs.sh
    stop-yarn.sh

    References:
    [1] http://hadoop.apache.org/

  • Server High Availability คืออะไร

    “เคยได้ยินคำว่า Server เรามี Uptimeถึง 99% ไหม” 

    High Availability มีชื่อย่อในวงการสั้น ๆ ว่า HA องค์กรหรือหน่วยงานมากมายในปัจจุบันมีการวัดประสิทธิภาพการให้บริการด้วย HA โดยจะมีหน่วยการวัดที่เรียกว่า Uptime ซึ่งคิดจากเวลาเป็น % ของการให้บริการ โดยมีชื่อเรียกระดับการให้บริการตามตารางดังนี้

    Availability % Downtime per year Downtime per month* Downtime per week
    90% (“one nine”) 36.5 days 72 hours 16.8 hours
    95% 18.25 days 36 hours 8.4 hours
    97% 10.96 days 21.6 hours 5.04 hours
    98% 7.30 days 14.4 hours 3.36 hours
    99% (“two nines”) 3.65 days 7.20 hours 1.68 hours
    99.5% 1.83 days 3.60 hours 50.4 minutes
    99.8% 17.52 hours 86.23 minutes 20.16 minutes
    99.9% (“three nines”) 8.76 hours 43.8 minutes 10.1 minutes
    99.95% 4.38 hours 21.56 minutes 5.04 minutes
    99.99% (“four nines”) 52.56 minutes 4.32 minutes 1.01 minutes
    99.999% (“five nines”) 5.26 minutes 25.9 seconds 6.05 seconds
    99.9999% (“six nines”) 31.5 seconds 2.59 seconds 0.605 seconds
    99.99999% (“seven nines”) 3.15 seconds 0.259 seconds 0.0605 seconds

    ระดับที่หลายหน่วยงานหรือหลายอุปกรณ์พยายามจะโฆษณา จะอยู่ที่ระดับ Five nines หรือ Uptime 99.999% นั่นเอง ซึ่งจะเห็นได้ว่าจะมี Downtime แค่ 5.26 นาที ต่อปีเท่านั้น ซึ่งมองในด้านอุปกรณ์เครือข่าย จะมีปัจจัยน้อยที่จะทำให้เกิด Downtime แต่ในส่วนของ Server นั่นจะมีปัจจัยมากกว่าเพราะประกอบด้วยอุปกรณ์มากชิ้น แต่ปัญหาดังกล่าวในปัจจุบันน้อยลง หลังจากเข้าสู่ยุคของ Cluster หรือ Cloud เพราะจะมีเครื่องคอยทำงานแทนกันอยู่ตลอดเวลานั่นเอง

    network_ha_design
    ตัวอย่างการทำ HA ระดับองค์กร

    โดยคำว่า HA มักจะใช้คู่กับสิ่งที่เราจะต้องการจะสื่อว่าจะทำอย่างไรให้ระบบมี Uptime สูง ๆ เช่น Server High Availability ก็คือทำให้เครื่อง Server มีการให้สามารถทำงานได้โดยไม่ Hang ไม่ดับ ถ้าใช้กับคำว่า Web Server High Availability ก็หมายความว่า จะทำอย่างไรให้สามารถให้บริการ Web Site โดยไม่มีอาการล่ม ซึ่งบางครั้งเราจะมีการ ตัด Downtime ที่เป็นการวางแผนเอาไว้ก่อนแล้ว หรือเรียกสั้น ๆ ว่าการ Maintenance ระบบนั่นเอง

    การที่จะทำให้เกิดสิ่งที่เรียกว่า HA ก็มีอยู่ 3-4 แบบใหญ่ ๆ ที่สามารถนำมาใช้เพื่อเพิ่ม Uptime ได้ดังนี้

    การใช้เทคโนโลยีคลัชเตอร์ (Cluster) : คือการนำเครื่องหลาย ๆ เครื่องมาตั้งค่าให้เหมือนกัน และทำงานได้เสมือนว่ามี Server แค่ตัวเดียว ในกรณที่เมื่อเครื่องใดเครื่องหนึ่งเสียหายจะไม่ส่งผลต่อการให้บริการ

    การทำรีดันแดนซ์ (Redundancy) : คือการใช้อุปกรณ์จำนวนสองชุดขึ้นไปทำงานพร้อมกัน ทำให้ได้ประสิทธิภาพเต็มที่ นิยมใช้ในระบบเครือข่าย

    การทำโหลดบาลานซ์ (Load Balance) : เราสามารถที่จะเอาเครื่อง Server หลาย ๆ เครื่องมาเชื่อมต่อกัน เพื่อให้ทำงานหลาย ๆ อย่างร่วมกัน

    การเรพพลีเคนและแบคอัพ (Replication & Backup) : คือการคัดลอกข้อมูลจากระบบหลักไประบบรอง เมื่ออุปกรณ์หลักเกิดล่ม ก็จะมีการเปิดระบบสำรองใช้ได้ทันที

    โดยการทำ Load Balance ยังสามารถอธิบายเพิ่มเติมได้ 3 ลักษณะด้วยกันดังนี้

    Round-Robin : คือการใช้วิธีหมุนวนไปเรื่อย ๆ ซึ่งอาจทำได้ทั้งแบบ Round-Robin ที่อุปกรณ์ Load Balance หรือการจด DNS แบบ Round Robin

    Sticky  : คือการยึดติดกับ Session ในกรณีที่เมื่อระบบมีการเลือก Server ไปแล้วก็จะให้ ผู้ใช้คนเดิมใช้ Server เดิมไปจนกว่าจะหมด Session (นึกถึงกรณีต้อง Login ก่อนใช้งาน ถ้าเปลี่ยน Server ไปเรื่อย ๆ คงไม่ดีแน่)

    Work Load : คือการตรวจสอบประสิทธิภาพของ Server ก่อนที่จะเลือก โดยเลือกจากเครื่องที่ยังมีประสิทธิภาพดีกว่าก่อน ทำให้ระบบโดยรวมจะมีประสิทธิภาพดีกว่าแบบ Round-Robin เหมาะกับระบบที่มีประสิทธิภาพ Server แตกต่างกัน (เครื่องแรงปนเครื่องอ่อน)

    จากที่กล่าวไปเราสามารถใช้หลาย ๆ วิธีผสมกันก็ได้เพื่อจุดมุ่งหมายเดียวกันคือการเพิ่ม Uptime โดยเครื่องมือที่เป็น Opensource ที่ใช้วัด และที่มีมานานรวมทั้งเป็นยอมรับคือเครื่องมือตระกูล nagios และ cacti นั่นเอง แต่อย่าลืมไปละครับว่าเครื่องมือเหล่านั้นต้องรันอยู่บนเครื่องที่มี Uptime สูงด้วย ไม่ใช่ คนตรวจสอบก็ Down, อุปกรณ์ ก็ Down ไม่เช่นนั้นอาจจะได้ค่าหลอก ๆ ไม่ตรงกับความเป็นจริงก็เป็นได้

    “ถึงเวลาต้องทำ HA กันหรือยังเอ่ย ?”

     

    Reference : 
    [1] http://en.wikipedia.org/wiki/High_availability
    [2] http://smart.tnis.com/th/articles/details/30/%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2%E0%B8%82%E0%B8%B5%E0%B8%94%E0%B8%84%E0%B8%A7%E0%B8%B2%E0%B8%A1%E0%B8%AA%E0%B8%B2%E0%B8%A1%E0%B8%B2%E0%B8%A3%E0%B8%96%E0%B9%83%E0%B8%AB%E0%B9%89%E0%B8%AD%E0%B8%87%E0%B8%84%E0%B9%8C%E0%B8%81%E0%B8%A3%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-HIGH-AVAILABILITY
    [3] http://www.dctwo.com.au/virtual/virtual_server_hardware_platform.html
    [4] http://bomber.exteen.com/20040813/cluster-load-balance

  • WorkShop : Load Balance Web Server (Server High Availability)

    “ทำไม Web ล่มบ่อยจัง, ทำอย่างไรได้บ้างถ้าไม่ต้องซื้อ Server แพง ๆ เพื่อใช้งานหนักเพียงไม่กี่วัน, Web ล่มแล้วจะติดต่อใครได้บ้าง” คำถามเหล่านี้เคยกวนใจคุณบ้างหรือเปล่า ?

    ขอนำเสนอวิธีการง่าย ๆ ที่ใครก็ทำได้ โดยในเนื้อหาหลักจะอธิบายแบบกว้าง ๆ และผมจะแยกเขียน blog อธิบายแบบละเอียดเป็นหัวข้อ ๆ ไปนะครับ ถ้าใครไม่เข้าใจสามารถคลิกเข้าไปดูเป็นเรื่อง ๆ ได้ครับ

    Workshop Outline
    ftp://ftp.psu.ac.th/pub/psu-lbs/workshop-outline.pdf

    เครื่องที่ใช้ในการทดสอบ (Oracle VM VirtualBox)
    *แนะนำให้เปิดกับโปรแกรม version ล่าสุด
    ** User : testlab , Password : 123456

    มีทั้งหมด 3 เครื่อง เป็น Web Server 2 เครื่อง และเครื่องสำหรับทำ Load Balance 1 เครื่อง
    สามารถ Download ได้ตาม Link นี้

    รายละเอียด URL
    Ubuntu Load Balance Server
    Ubuntu Web Server 1
    Ubuntu Web Server 2
    http://ftp.psu.ac.th/pub/psu-lbs/workshop.ova

    โดยจะแบ่งเป็น 7 ตอนโดยแยกเป็น 7 Blog ดังนี้

    ตอนที่ ชื่อตอน
    ตอนที่ 1 Server High Availability คืออะไร
    ตอนที่ 2 การติดตั้ง Apache2 + PHP5 บนเครื่อง Ubuntu 14.04 LTS
    ตอนที่ 3 การติดตั้ง Lighttpd + PHP5 บนเครื่อง Ubuntu 14.04 LTS
    ตอนที่ 4 การติดตั้งโปรแกรมตรวจสอบประสิทธิภาพ Server : Apache Jmeter บนเครื่อง Windows
    ตอนที่ 5 การทดสอบประสิทธิภาพ Web Server ประเภท Static Page : Apache2 vs Lighttpd บนเครื่อง Ubuntu 14.04 LTS
    ตอนที่ 6 การตรวจสอบสถานะการให้บริการ Web Server ด้วย WGET และสร้าง Shell Script เพื่อตรวจสอบอัตโนมัติ
    ตอนที่ 7 การสร้างระบบ Load Balance Web Server ด้วยวิธีการ URL Redirect
    บทความเพิ่มเติม
    วิธีการเขียน Script ตรวจสอบ Server Performance สำหรับเครื่อง Linux Server
    วิธีการเขียน Script ตรวจสอบ Server Performance สำหรับเครื่อง Windows 2008 R2
    วิธีการ Sync Source Code ระหว่างเครื่อง Linux (กำลังดำเนินการ)
    วิธีการ Sync Source Code ระหว่างเครื่อง Windows (กำลังดำเนินการ)

     

  • การสร้าง Windows Cluster

    วิธีการติดตั้ง Windows HPC Cluster

    โดยใช้ Windows HPC Server 2008 R2

    1. Hardware ที่ใช้ในการติดตั้ง

    สำหรับ hardware ที่ใช้ในการทำ Windows Hpc Cluster มีดังนี้ pc จำนวน 2 เครื่อง โดย pc เครื่องหนึ่งต้องมี Network Interface Card จำนวน 2 card จำลองเป็นเครื่อง frontend ส่วนอีกเครื่องเป็นเครื่องสำหรับการ compute มี Network Interface Card 1 card และมี switch  1 ตัว

    2. ติดตั้งซอฟต์แวร์บน Head Node (Frontend) สำหรับ Windows HPC Cluster

    การติดตั้งซอฟต์แวร์ที่จำเป็นสำหรับ Head Node ของ Windows HPC Cluster ประกอบด้วย การติดตั้งWindows Server 2008 R2, Active Directory Domain Services, และ Microsoft HPC Pack 2008 R2

    2.1 การติดตั้ง windows server 2008 R2

    การติดตั้ง Windows Server 2008 R2 บน Head Node ของ Windows HPC Cluster ในที่นี้ได้เลือกการติดตั้ง Windows Server 2008 R2 บน Head Node โดยใช้ Enterprise Edition ซึ่งทำการติดตั้งแบบ Full Installation และได้แบ่ง Disk Partition 2 Partition คือ Partition C: สำหรับติดตั้ง Windows Server 2008 R2 กับ Partition D: สำหรับใช้แชร์ข้อมูลให้กับเครื่องอื่นๆ บน Windows HPC Cluster

    หลังจากการติดตั้ง Windows Server 2008 R2 บน Head Node เสร็จสิ้น ให้ตั้งค่าของ WindowsServer 2008 R2 บน Head Node ดังนี้

    1. Full computer name โดยเข้าไปที่ Start -> Control Panel -> System and Security -> System ในหัวข้อ Computer name, domain, and workgroup settings กดเลือก Change settings ปรากฏหน้าต่าง System Properties ในหัวข้อ Computer Name กดปุ่ม Change โดยตัวอย่างของ Fullcomputer name เช่น headnode เป็นต้น

    2. Configure Network โดยเข้าไปที่ Start -> Control Panel -> Network and Internet -> Networkand Sharing Center -> Change adapter settings ในที่นี้ กำหนดให้ Head Node มี 2 Networkadapter สำหรับ Public Network และ Private Network โดยให้ทำการคอนฟิกส์รายละเอียดของทั้งPublic และ Private Network ในส่วนของ IP, Subnet mask, Gateway, และ DNS server (ในส่วนของ Private Network อาจระบุเพียง IP และ Subnet mask)

    3. Activate Windows

    4. Set Date and Time โดยเข้าไปที่ Start -> Control Panel -> Clock, Language, and Region ในหัวข้อ Date and Time ให้เซ็ต time and date และ time zone

    5. Turn On Windows Automatically Update โดยเข้าไปที่ Start -> Control Panel -> System andSecurity -> Windows Update แล้วกดปุ่ม Turn On Windows Update

    6. Install/Update Drivers แนะนำว่า ควรติดตั้ง/อัพเดท Driver สำหรับ Hardware ต่างๆ ให้เป็นเวอร์ชั่นล่าสุด และตรงกับระบบปฏิบัติการที่ใช้ โดยเฉพาะ Driver ในส่วนของ Network Card

    2.2 ติดตั้ง Active Directory Domain Services

    การติดตั้ง Active Directory Domain Services (เป็น Server Roles ตัวหนึ่ง) บน Head Node และเป็นการตั้งค่าให้ Head Node เป็น Active Directory Domain Controller พร้อมทั้งสร้าง Domain ที่ใช้สำหรับการทำงานในส่วนของ Windows HPC Cluster โดยเฉพาะ โดยมีขั้นตอนดังนี้

    1. เปิด Server Manager โดยเข้าไปที่ Start -> Administrative Tools -> Server Manager ให้เลือกRoles -> Add Roles แล้วกด Next

    2. เลือก Active Directory Domain Services แล้วกด Next และ Next และ Install (ขั้นตอนที่ 1 และ 2 นี้จะเป็นการติดตั้ง AD DS binary)

    3. หลังจากการติดตั้ง AD DS binary เสร็จสิ้น ให้ทำการรัน AD DS Installation Wizard โดย Start ->Run แล้วระบุคำสั่ง dcpromo เพื่อทำการเซ็ตให้ Head Node เป็น Active Directory Domain Controller พร้อมทั้งสร้าง Domain ที่ใช้สำหรับการทำงานในส่วนของ Windows HPC Cluster โดยเฉพาะ โดยมีขั้นตอนดังนี้

    3.1 เมื่อปรากฏ “AD DS Installation” wizard ให้กด Next (ไม่ใช้ Use advanced mode installation)

    3.2 ในหัวข้อ “Choose a Deployment Configuration” ให้เลือก “Create a new domain in a new forest” (เป็นการระบุว่า จะมีการสร้าง Domain ใหม่ และเครื่องที่รันนี้ จะเป็น Domain Controller) แล้วกด Next

    3.3 ระบุ “fully qualified domain name (FQDN)” (ของ Domain ที่ต้องการสร้างใหม่ (จากที่ระบุในข้อ 3.2) ซึ่งในที่นี้ คือ Domain สำหรับการทำงานในส่วนของ Windows HPC Cluster) แล้วกด Next ตัวอย่างเช่น winhpc.myorg.org เป็นต้น โดย FQDN นั้น ถือว่าเป็น ชื่อของ Domainซึ่งทำให้สามารถแยก Domain ต่างๆ ออกจากกัน และเมื่อมีเครื่อง Join เข้ามาสู่ Domain นั้นFull computer name ของเครื่องนั้น (ซึ่งจะปรากฏให้เห็นบน Domain) จะถูกระบุเป็น[Traditional Full computer name].[FQDN] เช่น headnode.winhpc.myorg.org เป็นต้น

    3.4 ระบุ “Forest functional level” เป็น Windows Server 2008 R2 แล้วกด Next

    3.5 ในหัวข้อ “Additional Domain Controller Options” ที่ปรากฏ จะมีการเลือก DNS Serverเพิ่มเติม สำหรับการติดตั้งไว้ให้อยู่แล้ว ก็ให้กด Next ต่อไปได้เลย (เมื่อปรากฏคำถามให้ตอบ yes)3.6 ในหัวข้อ “Location for Database, Log files, and SYSVOL” ให้ระบุตาม Defaults ที่ปรากฏคือ Database กับ Log files folder คือ C:\Windows\NTDS และ SYSVOL folder คือC:\Windows\SYSVOL

    3.7 ระบุ “Directory Services Restore Mode Administrator Password” (ใช้เมื่อ “This domain controller is started in Directory Services Restore Mode”) แล้วกด Next

    3.8 ปรากฏ “Summary” ให้กด Next เมื่อการดำเนินการเสร็จสิ้น ให้กด Finish แล้วทำการ Restart

    (more…)

  • rocks cluster mamba 6.0

    เป็นขั้นตอนการสร้าง Rocks cluster mamba 6.0 สำหรับ mamba 6.0 เป็นชื่อ version ครับ เราสามารถไปdownload ได้ที่ http://www.rocksclusters.org

    Hardware ที่ใช้ดังนี้ pc จำนวน 2 เครื่อง(พอดีใช้pcในการจำลองนะครับ) โดย pc เครื่องหนึ่งต้องมี Network Interface Card จำนวน 2 card จำลองเป็นเครื่อง frontend ส่วนอีกเครื่องเป็นเครื่องสำหรับการ compute มี Network Interface Card 1 card (เครื่องcomputeมีได้หลายเครื่อง) และมี switch  1 ตัว

     

    1.ใส่แผ่น Rocks cluster ที่ดาวโหลดไว้จากนั้นให้บูทจากแผ่นจะพบกับหน้าต่างการติดตั้งให้พิมพ์   “build”  เพื่อทำการติดตั้ง

    2.รอสักครู่ระบบกำลังทำการติดตั้ง

    3.จะปรากฎหน้าต่างดังรูป ให้เลือก CD/DVD-based Roll

    4.เลือก Roll ที่ต้องการติดตั้ง ในที่นี้เลือกทุก Roll กด Submit

    5.ก็จะแสดง Roll ที่ทำการเลือกไว้ ให้ทำการตั้งชื่อ Hostname ตามที่ต้องการ แล้วกด Next

    6.กรอกข้อมูลรายละเอียดต่างๆของ Rocks Cluster ที่ต้องการสร้าง

    7.ระบุหมายเลข IP สำหรับการเชื่อมต่อออก Public กด Next

    8.ระบุหมายเลข IP สำหรับการเชื่อมต่อภายใน Private กด Next

    9.ระบุ gateway และ DNS Servers กด Next

    10.ระบุ Password ของ root  กด Next

    11.ระบุ TimeZone กด Next

    12.เลือกการแบ่ง Partition โดยมีให้เลือกแบบ auto และ manual

    13.จากนั้นจะเริ่มทำการติดตั้งโดยความเร็วในการติดตั้งจะขึ้นอยู่กับความสามารถของ Hardware ด้วย

    14.หลังจากติดตั้งเรียบร้อยจะทำการ restart

    (more…)

  • How Cyrus Murder (Mail Clustering) work?

    ต่อจาก Mail Clustering with Cyrus Murder

    เมื่อ Backend ทำการ Restart หรือมีการเปลี่ยนแปลงเกี่ยวกับ Mailbox

    เครื่อง backend01 และ backend02 ทำการรายงาน mailbox ทั้งหมดในเครื่องของตนเอง ให้ mupdate ทราบ จากนั้น mupdate ก็จะทราบว่า ทั้ง Cluster มี mailbox อะไรและอยู่ที่ใด

    โดยเครื่อง backend01 และ backend02 จะ Login ด้วย User ที่สร้างไว้ใน mupdate ก่อน จากนั้นจึงสามารถทำการ Synchronize ข้อมูล mailbox ไปยัง mupdate ได้

    เมื่อ Mail client ติดต่อใช้บริการ IMAP/POP มายัง Frontend Server

     

    1. เมื่อ Mail Client ซึ่งสมมุติว่า ตั้งค่า Incoming Server เป็น frontend.yourdomain.com ซึ่งเป็นแบบ DNS Round Robin ก็ตอบ IP Address ของเครื่อง frontend server ใน cluster เช่นตอบ IP Address ของ frontend01.yourdomain.com เป็นต้น

    2. เมื่อ frontend01.yourdomain.com รับการเชื่อมต่อจาก Mail Client และทำหน้าที่เป็น IMAP Proxy, สมมุติ Mail Client ต้องการติดต่อ Mailbox ของ User/yingyong.f, เครื่อง frontend01 ก็จะสอบถามไปยัง mupdate ว่า user/yingyong.f อยู่ที่เครื่องใด, ซึ่ง mupdate ก็ดูในฐานข้อมูลตนเอง และตอบว่าอยู่ที่ backend02

    3. จากนั้น frontend01 ก็จะติดต่อกับ backend02 จากนั้น เมื่อผู้ใช้ส่งคำสั่งต่างๆมาจาก Mail Client ก็จะทำผ่าน frontend01 ซึ่งจะไปสอบถาม backend02 ต่อไป จนกระทั่ง ปิดการเชื่อมต่อ

    เมื่อ Mail Client ส่ง email ถึง Domain

     

    1. Mail Client ส่ง email ถึง somsri.b@yourdomain.com, ระบบ DNS จะหาว่า yourdomain.com อยู่ที่ไหน ก็จะพบว่า MX Record ของ yourdomain.com อยู่ที่ frontend.yourdomain.com จากนั้น DNS ก็จะใช้ Round Robin ตอบ IP Address ของหนึ่งใน Frontend มา สมมุติว่าตอบของ frontend02 มา

    2. เครื่อง frontend02 ก็จะไปถาม mupdate ว่า somsri.b อยู่ที่เครื่องใด, mupdate ตอบว่า อยู่ที่ backend01

    3. เครื่อง frontend02 ก็จะส่ง email ต่อไปให้ เครื่อง backend01 เพื่อเขียนลง Mailbox ของ somsri.b ต่อไป

     

  • Mail Clustering with Cyrus Murder

    ปัจจุบันมีการใช้งาน e-mail มากขึ้น และมีการเก็บข้อมูลต่างๆใน email ไว้เป็นจำนวนมาก ทำให้ Mail Server ของหน่วยงานเดิม อาจจะมีเนื้อที่ไม่เพียงพอต่อการใช้งาน ทำให้ต้องมีการขยายพื้นที่ Mail Server ให้มากขึ้น

    วิธีการที่นิยมใช้กันคือ ซื้อระบบใหม่ที่มี Harddisk ใหญ่ขึ้น หรือ ต่อกับระบบ Storage ที่ใหญ่ขึ้น (เช่น SAN หรือ Storage Cluster)

    วิธีการนี้ เรียกว่า Scale-Up ซึ่งเมื่อมีการใช้งานต่อไป แล้วข้อมูลจัดเก็บมากขึ้น ก็ต้องวางแผนในการซื้อระบบที่ใหญ่ขึ้นไปอีก

    ข้อดี:
    1. เป็นวิธีการที่นิยมทำกัน
    2.ได้ระบบใหม่ที่มีศักยภาพสูงขึ้นเรื่อยๆ

    ข้อเสีย:
    1. เมื่อจะย้ายระบบใหม่ จะเกิด Downtime เพราะต้องหยุดการทำงานของระบบเดิมทั้งระบบ
    2.  ในการย้ายข้อมูล email ซึ่งมีปริมาณมาก ต้องใช้เวลานาน และเสี่ยงต่อข้อมูลที่ไม่เป็นปัจจุบันที่สุดด้วย (ล่าสุดที่ทำการย้ายข้อมูลขนาด 300 GB ซึ่งลักษณะ email ที่ใช้เก็บข้อมูลเป็นไฟล์เล็กๆจำนวนมาก ต้องใช้เวลาถึง 18 ชั่วโมง)
    3. และที่หลีกเลี่ยงไม่ได้ ระบบแบบเดิมนี้ เป็น “Single Point of Failure” กล่าวคือ  ถ้าระบบเสียหาย ก็จะกระทบกับผู้ใช้ทั้งหมด

     

    แต่มีอีกแนวทางหนึ่ง เรียกว่าการ Scale-Out คือ การใช้ระบบที่เป็น Mail Cluster แทน เมื่อมีความต้องการขยายพื้นที่ ก็เพียงแต่ซื้อเครื่องใหม่ แล้วเพิ่มเข้าสู่ระบบ Cluster แล้วเริ่มต้นใช้งานต่อเนื่องได้

    แนวทาง Scale-Out ทำให้สามารถขยายพื้นที่จัดเก็บได้เรื่อยๆ อย่างต่อเนื่อง

    ข้อดี:
    1.ลดปัญหา Single Point of Failure โดยการกระจายที่จัดเก็บไปใน Server ต่างๆใน Cluster เมื่อเกิดความเสียหากับเครื่องใดเครื่องหนึ่ง ก็จะไม่กระทบกับผู้ใช้ทั้งหมด
    2. เมื่อต้องการพื้นที่จัดเก็บเพิ่ม ไม่ต้องหยุดการทำงานทั้งระบบ เพียงเพิ่มเครื่องใหม่เข้าใน Cluster แล้วปรับแต่งค่าเพียงเล็กน้อย ก็สามารถใช้งานได้เลย

    ข้อเสีย:
    1. ระบบมีความซับซ้อนยิ่งขึ้น มีระบบต้องเฝ้าระวังมากขึ้น

    ในระบบ PSU E-Mail Service ใช้โอเพนซอร์สซอฟต์แวร์ในการบริการ Email คือ cyrus-imapd ซึ่งสามารถสร้างระบบ Mail Cluster ด้วยการติดตั้งแพคเกจที่ชื่อว่า cyrus-murder ได้

    Cyrus Murder ประกอบไปด้วย Server 3 ประเภท
    1. Backend Servers: ทำหน้าที่เก็บ Mailbox ของผู้ใช้, โดยแต่ละเครื่องจะรายงานรายละเอียดของ Mailbox ที่อยู่บนเครื่องตนเอง ให้ MUPDATE Server ทราบ
    2. Frontend Servers: ทำหน้าที่บริการ IMAP/POP ให้กับ Mail Client และ บริการ SMTP เพื่อส่งถึง Mailbox ที่อยู่บน Backend Servers ที่ถูกต้อง โดยอาศัยบริการของ MUPDATE Server เพื่อให้ทราบว่า Mailbox ที่ต้องการติดต่อด้วย อยู่บน Backend Server เครื่องใด
    3. MUPDATE Servers: ทำหน้าที่เป็นฐานข้อมูลกลางของ Mailbox ทั้งหมดใน Backend Cluster โดยรับรายงานจาก Backend Servers และบริการตอบ Fronend Servers ว่า Mailbox ที่ต้องการติดต่อด้วย อยู่บน Backend Server เครื่องใด

    อ่านต่อ:

    – ระบบ Cyrus Murder ทำงานอย่างไร
    – วิธีการติดตั้ง Backend Server และการนำเข้าระบบ
    – วิธีการติดตั้ง Frontend Server และการนำเข้าระบบ
    – วิธีการติดตั้ง MUPDATE Server และการนำเข้าระบบ