Juju #04 – วิธีทำให้ WordPress กระจายงานไปยัง MySQL Slave ด้วย HyperDB

ต่อจาก Juju #03 – วิธีสร้าง Load Balance MySQL เมื่อมี MySQL Server มากกว่า 1 ตัว ซึ่งทำการ Replication กัน (ในตอนนี้ 2 ตัว คือ Master กับ Slave) ซึ่งให้ความสามารถในเรื่อง [1] Data-Security : เมื่อข้อมูลถูก Replicate ไปที่ Slave แล้ว เราสามารถหยุดการทำงานของ Slave เพื่อทำการสำรองข้อมูลได้ โดยไม่กระทบประสิทธิภาพการทำงานของ Master Analytics: ทำการวิเคราะห์ข้อมูลต่างๆได้ที่ Slave โดยไม่กระทบประสิทธิภาพการทำงานของ Master Scale-Out Solutions: เมื่อมี Slaves หลายตัว ทำให้สามารถกระจายงานในด้าน Read เพื่อเพิ่มประสิทธิภาพ โดยการแก้ไขข้อมูล จะทำที่ Master เท่านั้น ในบทความนี้ จะกล่าวถึงวิธีการ Scale-Out Solutions ของ WordPress เท่านั้น โดยใช้ Plugin ชื่อ HyperDB HyperDB [2] เป็น Database Class ที่ใช้แทนที WordPress built-in database functions โดยจะทำให้ WordPress สามารถติดต่อกับ MySQL ได้หลายเครื่อง โดยที่สามารถกำหนดได้ว่าจะ Write ไปยัง Master และ Read จากทั้ง Master และ Slaves อีกทั้งยังสามารถ Failover ได้อีกด้วย วิธีการติดตั้ง HyperDB ที่ WordPress ใช้คำสั่ง wget https://downloads.wordpress.org/plugin/hyperdb.1.2.zip sudo apt-get install unzip sudo unzip hyperdb.1.2.zip ย้ายไฟล์ hyperdb/db-config.php ไปยังที่ Directory เดียวกันกับ wp-config.php (ในที่นี้คื่อ /var/www/) sudo cp hyperdb/db-config.php /var/www ย้ายไฟล์ hyperdb/db.php ไปยังที่ Directory wp-content (ในที่นี้คื่อ /var/www/wp-content) sudo cp hyperdb/db.php /var/www/wp-content/ แก้ไขไฟล์ db-config.php (ในที่นี้คื่อ /var/www/db-config.php) [3] โดยค้นหาคำว่า DB_HOST ซึ่งควรจะปรากฏอยู่แค่ 2 แห่งในไฟล์ ให้ไปที่ชุดที่ 2 ซึ่งมีเนื้อหาประมาณนี้ จากนั้นแก้ไข DB_HOST ให้เป็น DB_SLAVE_1 ต่อไปก็ไปเพิ่ม define(‘DB_SLAVE_1′,’xxx.xxx.xxx.xxx’) ซึ่งไฟล์ wp-config.php หรือไม่ก็ wp-info.php (ในที่นี้อยู่ที่ /var/www/wp-info.php) เมื่อทดสอบใช้งาน พบว่า มี Query มาทั้งที่ master และ slave ในภาวะว่าง ในภาวะมีงานเข้ามา ทดสอบเพิ่มบทความใหม่ ชื่อ “This is my first article” พบว่า ระบบสามารถเขียนไปยัง Master แล้วสามารถส่งต่อไปให้ Slave ได้ ต่อไป เพิ่ม mysql-slave2 เข้าไปใน Juju และสร้าง Relation เป็น master -> Slave เช่นกัน แล้วทำการเพิ่ม DB_SLAVE_2 เข้าไปใน db-config.php และ wp-info.php ก็จะพบว่าข้อมูลได้ Replicate ไปหา Slave2 แล้ว และ เมื่อทำการ

Read More »

Juju #03 – วิธีสร้าง Load Balance MySQL

จาก Juju #02 – วิธีติดตั้ง WordPress ทำให้ได้ WordPress ซึ่งเป็น Web Application 2 เครื่องทำหน้าที่ Load Balance กัน ด้วย haproxy แล้ว จากนั้น ทำการเพิ่ม MySQL เข้าไปใหม่ แล้วตั้ง Application Name เป็น mysql-slave แล้ว Commit Chages จากนั้น สร้าง Relation เป็น mysql:master –> mysql-slave:slave เมื่อเสร็จแล้ว จะได้ผลอย่างนี้ ทดสอบเพิ่ม Post ใหม่ แล้วเข้าไปใน mysql-slave (juju-xxx-xx เป็นชื่อเครื่องที่ Juju สร้างขึ้น) lxc exec juju-xxxx-xx  bash แล้วใช้คำสั่งต่อไปนี้ mysql -u root -p$(cat /var/lib/mysql/mysql.passwd) -e ‘use wordpress; select post_title from wp_posts;’ ก็จะพบว่า mysql-slave ได้รับการ Update ตามไปด้วย บทความต่อไป จะกล่าวถึงวิธีการทำให้ WordPress สามารถใช้ mysql-slave ในการ Read ได้ เพื่อกระจายโหลดครับ  

Read More »

การใช้โปรแกรม Navicat สำหรับเชื่อมต่อ DataBase

การ Connect Navicat Download : https://drive.google.com/file/d/0B45mg2kqF_HOSTA0UGh4SkVIZ00/view 1.โยน File ชื่อว่า ntunnel_mysql เข้าไปใน Server ที่ /home/wwwroot 2. run file ที่เว็บบราว์เซอร์ ด้วย : 192.168.xxx.xxx/ntunnel_mysql หรือ 192.168.xxx.xxx/ntunnel_mysql.php 3.เข้าไปที่โปรแกรม Navicat – General – Connection Name = ชื่อ db – Host Name / IP Address = ปล่อยว่าง – Port = 3306 – User Name = User ที่เรา Add ใน phpmyadmin – Passwd = Passwd ที่เรา Add ใน phpmyadmin – HTTP – ติ๊กเลือก Use HTTP Tunnel – Tunnel URL : http://192.168.xxx.xxx/ntunnel_mysql หรือ http://192.168.xxx.xxx/ntunnel_mysql.php 4. Test Connect 5. OK   หมายเหตุ: -ขอบคุณ คุณอาฮาหมัด เจ๊ะดือราแม จาก สถาบันวัฒนธรรมศึกษากัลยาณิวัฒนา

Read More »

How to: SQL Server Failover Cluster

สิ่งที่ต้องมี Software Windows Server 2012 R2 Microsoft SQL Server 2016 รายละเอียดเพิ่มเติม Software Requirements Hardware เครื่องคอมพิวเตอร์อย่างน้อย 2 เครื่องสเป็คเดียวกัน (ในเอกสารนี้ใช้ 2 เครื่อง) ในเอกสารนี้ใช้ VMware ESXi รายละเอียดเพิ่มเติม Hardware Requirements เครื่องคอมพิวเตอร์ 1 เครื่องสำหรับเป็น iSCSI เซิร์ฟเวอร์ IP address สำหรับเครื่อง Server 2 เลข สำหรับ Microsoft failover cluster 1 เลข สำหรับ Microsoft SQL Server failover cluster 1 เลข ทุกไอพีต้องมีชื่อใน domain .psu.ac.th Shared Storage iSCSI (ในเอกสารนี้เลือกใช้ iSCSI) IP address สำหรับ  iSCSI Server หากมี shared storage อื่นๆ สามารถใช้ได้เลย Domain Account ติดต่อศูนย์คอมพิวเตอร์เพื่อขอสิทธิ์จอยโดเมน มีครบแล้วก็เริ่มกันเลย Shared Storage (iSCSI) (Windows Server 2012R2 Data center) เข้าระบบด้วยบัญชี administrator คลิกปุ่ม start พิมพ์ windows update เพื่อเปิดโปรแกรม windows update ให้ update ทุกอย่างให้เรียบร้อย (restart หากต้อง restart หากรีสตาร์ทกลับมาแล้วเข้าระบบด้วยผู้ใช้ administrator) เปิด Server Manager (ไอคอนแรกข้างปุ่ม start , โดยปกติจะถูกเรียกใช้งานโดยอัตโนมัติ) ที่ Dashboard มองไปที่ QUICK START ข้อ 2 Add roles and features คลิก คลิก Next เลือก Role-based of feature-based installation คลิก Next เลือก Select a server from the server pool เลือกเครื่องของเราในช่องด้านล่างคลิก Next มองหา File and Storage Services คลิกสามเหลี่ยมก็จะมี File and iSCSI Services ทำเครื่องหมายถูกหน้าข้อความ iSCSI Target Server จะมีหน้าต่าง สรุปการติดตั้งขึ้นมา คลิก Add Features คลิก Next ไปเรื่อยๆ จนเจอคำว่า Install คลิก Install รอจนกว่าจะติดตั้งเสร็จ (Installation succeeded on …) คลิก Close กลับมาที่ Server Manager คลิกที่ File and Storage Services คลิก iSCSI มองไปด้านขวาจะปุ่ม TASKS ให้คลิก TASKS เลือก New iSCSI Virtual Disk… จะมีหน้าต่าง New iSCSI Virtual Disk Wizard เลือก Type a custom path

Read More »

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

HBase เป็น Database บน Hadoop [1] จากบทความ ขั้นตอนการติดตั้ง Hadoop Cluster อย่างง่าย จะได้ HDFS อยู่ที่ hdfs://192.168.1.101:9000 แล้ว ก็จะสามารถใช้ HBase บน Hadoop HDFS ได้ ขั้นตอนการติดตั้ง โคลนเครื่องต้นฉบับ แล้วตั้ง ip address ให้เรียบร้อย เช่น 192.168.1.121 ติดตั้ง 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 แก้ไขไฟล์ /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> ขั้นตอนการ Start HBase (hduser shell) /usr/local/hbase/bin/start-hbase.sh ดูผลการทำงาน จาก Hadoop HDFS ว่าสร้าง /hbase แล้ว http://192.168.1.101:50070/explorer.html#/hbase ใช้งานผ่าน Shell ได้จากคำสั่ง (hduser shell) /usr/local/hbase/bin/hbase shell ขั้นตอนการ Stop HBase (hduser shell) /usr/local/hbase/bin/stop-hbase.sh   References: [1] https://hbase.apache.org/

Read More »