Oracle MySQL Cluster :- The shared-nothing architecture (Manual Installation)

สิ่งที่ต้องเตรียม ได้แก่ Ubuntu Server 16.04 (รุ่น x86_64 architecture) จำนวนอย่างน้อย 4 เครื่อง (แต่ควรอย่างน้อย 6 เครื่อง), IP Address 4 IP, Software MySQL Cluster โหลดที่ https://edelivery.oracle.com/ (ต้องสมัครสมาชิกให้เรียบร้อยก่อน) ใช้คำค้นว่า MySQL Cluster (จะมีรุ่น 7.5.5 ให้โหลด) โดยไฟล์ที่ใช้งานชื่อว่า V840854-01.zip MySQL Cluster 7.5.5 TAR for Generic Linux (glibc2.5) x86 (64bit) 4 เครื่องประกอบด้วยอะไรบ้าง 2 x data nodes เปลี่ยน IP ให้ตรงกับที่ใช้งาน 192.168.106.32  Data-node1 192.168.106.33  Data-node2 1 x SQL/NoSQL Application Node 192.168.106.42  SQL-Node 1 x Management Node 192.168.106.40  Management-node เริ่มที่ Management Node ssh 192.168.106.40 -l sudo_user (user ที่เรียกใช้คำสั่ง sudo ได้) คลายแฟ้ม V840854-01.zip ด้วยคำสั่ง unzip V840854-01.zip (อาจต้องติดตั้งเพิ่มเติมด้วยคำสั่ง sudo apt install unzip) จะได้แฟ้ม  mysql-cluster-advanced-7.5.5-linux-glibc2.5-x86_64.tar.gz คลายแฟ้ม mysql-cluster-advanced-7.5.5-linux-glibc2.5-x86_64.tar.gz ด้วยคำสั่ง tar zxvf mysql-cluster-advanced-7.5.5-linux-glibc2.5-x86_64.tar.gz เปลี่่ยนชื่อ mysql-cluster-advanced-7.5.5-linux-glibc2.5-x86_64 เป็น mysql mv mysql-cluster-advanced-7.5.5-linux-glibc2.5-x86_64 mysql คัดลอกแฟ้ม mysql/bin/ndb_mgmd และ mysql/bin/ndb_mgm ไปไว้ที่ /usr/local/bin cp mysql/bin/ndb_mgm* /usr/local/bin/ สร้างโฟลเดอร์ /var/lib/mysql-cluster และสร้างแฟ้ม /var/lib/mysql-cluster/config.ini sudo mkdir -p /var/lib/mysql-cluster/ เพื่อเป็นการบอก Management node ว่า Data Node และ SQL Node มีใครบ้าง ให้สร้าง config.ini ไว้ที่ /var/lib/mysql-cluster ด้วยคำสั่ง cat<< EOF | sudo tee /var/lib/mysql-cluster/config.ini เพิ่มข้อความต่อไปนี้ลงไป [ndbd default] NoOfReplicas=2 DataMemory=80M IndexMemory=18M [mysqld default] [ndb_mgmd default] [tcp default]# Cluster Control / Management node [ndb_mgmd] hostname=192.168.106.40# Data Node 1 [ndbd] hostname=192.168.106.32 DataDir= /var/lib/mysql-cluster# Data Node 2 [ndbd] HostName=192.168.106.33 DataDir=/var/lib/mysql-cluster# SQL Node [mysqld] hostname=192.168.106.42 # If you to add new SQL Node [mysqld] EOF เพิ่มข้อความต่อไปนี้ในแฟ้ม /etc/rc.local /var/lib/mysql-cluster/config.ini –configdir=/var/lib/mysql-cluster/ โดยเพิ่มให้อยู่บรรทัดก่อนคำว่า exit 0 ตัวอย่าง /etc/rc.local #!/bin/sh -e # # rc.local #

Read More »

pGina fork 3.2.4.1 configuration

ในตอนที่แล้วได้พูดถึงว่า pGina fork คืออะไรไปแล้ว ในครั้งนี้จะพูดถึงการตั้งค่าสำหรับทำเป็น Windows Authentication ในเครื่องคอมที่เป็น Windows 10 ผมได้ทำ screen capture มาเฉพาะที่ผมได้ใช้งาน ซึ่งก็คือ Local Machine, RADIUS plugin, Single User plugin และ LDAP plugin ครับ ตามดูกันมานะครับ หน้าแรกคือแท็บ General จะแสดงให้เห็นว่าโปรแกรมพร้อมทำงาน ให้ดูที่ข้อความที่แสดงเป็นสีเขียวใต้ข้อความ pGina Service status และตัวเลือกที่ผมเลือกใช้คือ Use original username to unlock computer (เพราะว่าผมจะใช้ Single User plugin ร่วมด้วย) แท็บถัดไปคือ แท็บ Plugin Selection อันแรกที่จะใช้คือ Local Machine คือ user ที่สร้างขึ้นภายใน Windows นั่นเอง สังเกตจะมีตัวเลือกที่ Authentication และ Gateway แก้ไขรูปภาพ Local Machine Plugin ต้อง ติ๊ก Notification ด้วย จึงจะมีผลกับ option Remove account and profile after logout จากนั้นให้คลิกปุ่ม Configure จะได้ค่าดีฟอลต์ ดังรูปข้างล่างนี้ ผมจะใช้ค่าตัวเลือก Remove account and profile after logout when account does not exist prior to logon เพื่อที่ไม่ต้องเก็บ user profile ที่เป็น user จาก user database ภายนอก เช่น จาก RADIUS server เป็นต้น และ หากต้องการให้ user นั้นมีสิทธิมากกว่า User ทั่วไป ก็ตั้ง Mandatory Group เช่น ตั้งเป็น Administrators เป็นต้น ต่อไปก็มาถึง RADIUS plugin เลือก Authentication และ Notification จากนั้นคลิกปุ่ม Configure จะได้ค่าดีฟอลต์ ดังรูป ผมจะเลือกใช้และใส่ค่าต่าง ๆ เหล่านี้ครับ เลือก Enable Authentication เพื่อสอบถาม username/password เลือก Enable Accounting เพื่อส่งข้อมูลบันทึกค่า Acct-Status-Type ไปยัง RADIUS Server แล้วระบุ Server IP และ Shared Secret ที่จะต้องตรงกันกับที่ระบุอยู่ใน config ที่ RADIUS server เช่น FreeRADIUS จะอยู่ในไฟล์ /etc/freeradius/clients.conf เป็นต้น (13 ก.ค. 2561) เลือก Called-Station-ID ด้วย หากต้องการเลข MAC Address เก็บด้วยนอกจากเก็บ IP (10 ก.ค. 2561) พบว่าจำเป็นต้องเลือก Accounting Options หัวข้อ Send Interim Updates เพื่อให้มีการส่งค่า accounting ได้ (โดยใช้ค่า Send update every 900 seconds ตามที่เป็นค่า default) แล้วระบุ IP Address

Read More »

pGina fork Open Source Windows Authentication

เราใช้งาน pGina for Windows เวอร์ชั่น 3.1.8.0 มาสักระยะหนึ่งแล้ว คิดว่าแอดมินดูแลห้องคอมคงจะรู้จักกันดีว่าเป็นโปรแกรมสำหรับให้ผู้ใช้งานใส่ username และ password ของ user database ภายนอกได้ เวอร์ชั่นนี้ก็ยังคงใช้งานได้ดีอยู่ครับ แต่ตอนนี้หากเราจะให้ pGina ส่ง RADIUS Accounting ไปยัง RADIUS Server จะทำได้ไม่สมบูรณ์ ผมค้นหาอยู่ว่าจะมีเวอร์ชั่นที่ใหม่กว่ามั้ย ก็พบว่าปัจจุบันนี้ เว็บไซต์เดิม pGina นั้นจะมีถึงเพียงแค่เวอร์ชั่นเก่า แต่มีคนนำไปทำเพิ่มเติมจาก project เดิม เรียกว่าการ fork project จึงเกิดเป็นเว็บไซต์อีกอันคือ pGina fork  ซึ่งเวอร์ชั่นปัจจุบันที่ผมทดสอบแล้วว่าใช้งานกับ Windows 10 ได้ คือเวอร์ชั่น 3.2.4.1 แม้ว่าจะมีเวอร์ชั่นล่าสุดกว่านี้ (3.9.9.7) แต่ Windows 10 มันแจ้งเตือนว่าเป็นเวอร์ชั่นที่ไม่ได้ระบุ Publisher ที่แน่ชัด Windows 10 จึงเตือนให้อย่าติดตั้ง ผมก็ไม่แน่ใจว่าเพราะเหตุใด  สรุปว่า pGina fork ก็คือ pGina ที่มีคนนำไปพัฒนาต่อโดยการ fork จาก project เดิม และมาเป็น project อีกอันที่นี่ http://mutonufoai.github.io/pgina/ หรือ ที่นี่ก็ได้ https://github.com/MutonUfoAI/pgina/ ดาวน์โหลดเวอร์ชั่น 3.2.4.1 ได้ที่นี่ https://github.com/MutonUfoAI/pgina/releases/download/3.2.4.1/pGinaSetup-3.2.4.1.exe ในตอนถัดไปจะมาพูดถึง pGina fork 3.2.4.1 configuration ครับ  

Read More »

ติดตั้ง Piwik บน Ubuntu 16.04

ถ้าอยากมี Web Analytic ใช้เอง ทำไงได้บ้าง             PIWIK [1] เป็นโปรแกรมที่เป็น Opensource ใช้สำหรับทำ Web Analytic โดยมีจุดเด่นใหญ่ ๆ คือมีข้อมูลอยู่ในองค์กรเอง และรองรับมุมมองต่าง ๆ ครบถ้วนตามที่ควรจะมี (จริง ๆ ใช้ Google Analytic ก็ได้ครับ ขอเสนอเป็นทางเลือกในกรณีที่ต้องการอะไรที่ private หน่อย) การติดตั้งลักษณะก็จะเป็นการติดตั้ง mysql (หรือ mariadb), php, apache (หรือ nginx) ดังนี้ครับ ทำการติดตั้ง Ubuntu 16.04[2] ทำการติดตั้ง nginx+mariadb+php (สามารถติดตั้งเป็น apache+mysql+php[3]ก็ได้ครับ) MariaDB sudo apt install mariadb-server mariadb-client Nginx sudo apt install nginx PHP sudo apt install php-fpm php-mysql php-curl php-gd php-cli php-geoip php-zip php-mbstring php-dom php-xml ทำการตั้งค่า nginx เพื่อใช้งานกับ php-fpm sudo vim /etc/php/7.0/fpm/php.ini แก้ไข php config (uncomment cgi.fix_pathinfo และแก้ค่าเป็น 0) […] ; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP’s ; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok ; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting ; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting ; of zero causes PHP to behave as before. Default is 1. You should fix your scripts ; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. ; http://php.net/cgi.fix-pathinfo cgi.fix_pathinfo=0 […] แก้ไขไฟล์ nginx.conf sudo vim /etc/nginx/sites-available/default ตั้งค่า fastcgi_pass ให้เรียกใช้งาน php7.0-fpm […] index index.html index.htm index.nginx-debian.html index.php; server_name _; location / { # First attempt to serve request as file, then # as directory,

Read More »

ติดตั้ง UserGrid ด้วย Docker Container

อยากสร้าง App บนมือถือ แต่ไม่อยากยุ่งยากจัดการ User, ทำระบบ Login, ฐานข้อมูล, เขียนเชื่อมต่อฐานข้อมูล แถมต้องใช้ได้กับทุก Platform มีอะไรที่จัดการให้หมดเลยไหม              Apache usergrid [1] เป็นทางออกหนึ่งสำหรับผู้ที่ไม่อยากยุ่งยากในการจัดการในส่วนของ Server-Side Code และเน้นในการเขียน Application ในการใช้งานเพียงอย่างเดียว โดย usergrid ชื่อก็บอกเป็นนัย ๆ อยู่แล้วครับ ว่าเป็นระบบจัดการ User ทั้งการเข้าถึงรวมถึงการกำหนดสิทธิในการใช้งาน แต่จะมีในส่วนของระบบฐานข้อมูล Application ไว้ให้ใช้งานด้วย โดยฐานข้อมูลจะเป็น nosql ซึ่งจะมีเครื่องมือในการ query เบื้องต้น, Rest Service และ SDK สำหรับพัฒนาในอุปกรณ์มือถือ และสามารถใช้ในการพัฒนา Application ด้วยภาษาต่าง ๆ มากมาย สามารถเข้าไปอ่านเพิ่มเติมได้ที่ http://usergrid.apache.org/             สำหรับวิธีลงมีหลายแบบ แต่ที่จะแนะนำจะเป็นการติดตั้งเป็น Container ด้วย Docker[2] ซึ่งสิ่งที่ต้องการใช้งานมีดังนี้ Java – Ubuntu base image with Oracle JVM : สำหรับใช้ Run ระบบ เท่าที่ติดตั้งไม่ลงตัวนี้ก็สามารถใช้งานได้ Cassandra : ระบบฐานข้อมูล nosql Elasticsearch : ระบบค้นหาแบบ distributed search ลองนึกถึงการ search ที่ทุก field ทำ index ไว้หมดซึ่งเร็วแน่นอน Usergrid : ระบบ Core Engine ซึ่งจะให้บริการผ่าน RESTful API (เทียบได้กับ Web Service แต่ยืนหยุ่นกว่าและคุยด้วย json) Usergrid Admin Portal : เป็น Web Site ที่ใช้ในการบริหารจัดการข้อมูล กำหนดสิทธิ์ และสามารถ Query ข้อมูลเบื้องต้นได้  1. ทำการติดตั้ง OS และ Docker (อ่านเพิ่มเติมได้จาก sysadmin.psu.ac.th[3]) แต่จากตัวอย่างจะรันด้วย PhotonOS[4] เนื่องจากมีขนาดเล็กและเหมาะกับการใช้งานกับ Vmware มากกว่า (ติดตั้งด้วย .ova) แต่สามารถติดตั้งผ่าน Linux Distribution อื่นได้ด้วยคำสั่งเดียวกัน 2. ติดตั้งฐานข้อมูล cassandra ด้วยคำสั่งดังนี้ (ในกรณีที่ต้องการติดตั้งแบบ cluster สามารถศึกษา option ได้จาก website ข้างต้น[2]) docker run –detach –name cassandra –volume $(pwd)/cassandra-data:/var/lib/cassandra yep1/usergrid-cassandra             โดยสำหรับ option –volume หน้า : คือ path ของเครื่อง Host, หลัง : จะเป็น path ใน containner ในกรณีที่ลบ containner หรือ update software  ใน containner ข้อมูลในฐานข้อมูลจะได้ไม่หาย 2. ติดตั้งระบบค้นหา Elasticsearch ด้วยคำสั่งดังนี้ docker run –detach –name elasticsearch –volume $(pwd)/elasticsearch-data:/data yep1/usergrid-elasticsearch 3. ติดตั้ง Usergrid ด้วยคำสั่งดังนี้

Read More »