Config Webserver # yum update -y Disable Selinux # nano -w /etc/selinux/config Install Csf firewall # cd /usr/src# wget https://download.configserver.com/csf.tgz# tar -xzf csf.tgz# cd csf/# sh install.sh # yum install perl-libwww-perl net-tools perl-LWP-Protocol-https -y# csf -r Install httpd # yum install httpd # systemctl enable httpd# systemctl start httpd Install PHP 5.6 # yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm# yum install yum-utils # yum-config-manager --enable remi-php56# yum install php php-mcrypt php-cli php-gd php-curl php-mysql php-ldap php-zip php-fileinfo Install Mysql 5.7 # yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm# yum install mysql-community-server# systemctl enable mysqld# systemctl start mysqld# systemctl status mysqld Test Connection remote Database # mysql -u (user) -h (hostdatabase) (database) -p Change Directory files (var/www/html) # mkdir -p /data/www# cd /data/www/# ls -laZ /data/www# chcon -Rv --reference=/var/www/html /data/www# chcon -t httpd_sys_content_t /data/www/ -R# chcon -t httpd_sys_rw_content_t /data/www/ -R# chcon -R system_u:object_r:httpd_sys_content_t /data/www/# chcon -Rv --reference=/tmp /data/www # chcon -R --type=httpd_sys_rw_content_t /data/www# restorecon -Rv /data/www Install Unison (rsync) # yum install ocaml ocaml-camlp4-devel ctags ctags-etags# wget http://www.seas.upenn.edu/~bcpierce/unison//download/releases/stable/unison-2.48.4.tar.gz# tar xvzf unison-2.48.4.tar.gz # cd src/# make# cp -v unison /usr/local/sbin/# cp -v unison /usr/bin/ Test Connection # unison -testServer /data/www ssh://203.78.98.158//data/www Unsion authorized_keys # ssh-keygen -t dsa# nano -w /etc/hosts 203.78.98.153 webserv1203.78.98.158 webserv2 # scp ~/.ssh/id_dsa.pub root@203.78.98.158:.ssh/authorized_keys # nano -w /root/sync.data.sh #!/bin/bash# set paths / dirs#_paths="/data/www/ \#/data/www/ "#sync only webserv1 for now _paths="/data/www/ "# binary file name _unison=/usr/bin/unison# server names# sync webserv1.systemnetway.com with rest of the server in cluster# i.e _rserver="webserv2.systemnetway.com" _rserver="root@webserv2"# sync it for r in ${_rserver} do for p in ${_paths} do ${_unison} -batch "${p}" "ssh://${r}/${p}" done # crontab -e*/3 * * * * ./sync.data.sh &>/tmp/sync.data.sh.log Install Redis Client # yum install php-pecl-redis# service httpd graceful# php -m |grep redis# nano -w /etc/httpd/conf.d/php.conf #php_value session.save_handler "files"#php_value session.save_path "/var/lib/php/session"#php_value soap.wsdl_cache_dir "/var/lib/php/wsdlcache"php_value session.save_handler "redis"php_value session.save_path "tcp://172.168.100.6:6379?auth=vkoomN1234"php_value soap.wsdl_cache_dir "tcp://172.168.100.6:6379?auth=vkoomN1234" # cd /data/www/# nano -w test-sessions.php Created a session # nano -w /etc/csf/csf.conf Allow port 6379# csf -r# nano -w /etc/php.ini [Session]; Handler used to store/retrieve data.; http://php.net/session.save-handler;session.save_handler = filessession.save_handler = redis ;session.save_path = "/tmp"session.save_path = "tcp://172.168.100.6:6379?auth=vkoomN1234"
Install Mysql 5.7 # yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm# yum install mysql-community-server# systemctl enable mysqld# systemctl start mysqld# systemctl status mysqld# grep 'temporary password' /var/log/mysqld.log# mysql_secure_installation# mysql -u root -p Install PHP 5.6 # yum install epel-release -y # yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm# yum install yum-utils# yum-config-manager --enable remi-php56# yum install php php-mcrypt php-cli php-gd php-curl php-mysql php-ldap php-zip php-fileinfo Install Phpmysqladmin # yum -y install phpmyadmin# yum -y install php php-common php-mbstring php-gd Install Csf # cd /usr/src # wget https://download.configserver.com/csf.tgz# tar -xzf csf.tgz# cd csf# sh install.sh# nano -w /etc/csf/csf.conf # yum install perl-libwww-perl net-tools perl-LWP-Protocol-https -y Install Redis server # yum install redis# systemctl enable redis# systemctl start redis.service # redis-cli pingPONG # nano -w /etc/redis.conf #bind 172.168.100.6unixsocket /var/run/redis/redis.sockunixsocketperm 777 # requirepass foobared requirepass vkoomN1234 (Password ในการ auth) save 900 1save 300 10save 60 10000## Set the max memorymaxmemory 2048mb (ปรับเท่าขนาด memory ที่ใช้)## Update the eviction policymaxmemory-policy allkeys-lru # mkdir -p /var/run/redis# chown redis:redis /var/run/redis # nano -w /etc/sysctl.conf vm.overcommit_memory = 1 # sysctl -p
การทำงานของ Webserver นั้นจะทำงานเป็น Replica Data ในระดับ Realtime โดยที่มีการใช้งานหรืออัพเดทข้อมูลเครื่องใดเครื่องหนึ่ง อีกเครื่องจะทำการอัพเดทข้อมูลไปด้วย Replica Mirror แบ่งเป็นเส้นทางในการทำงานนั้นเป็น 2 ประเภทดังนี้ One Way สามารถส่งไปอย่างเดียวและแก้ไขข้อมูลได้ที่เครื่องเดียวเท่านั้น Two Way สามารถส่งไปและแก้ไขได้ทั้ง 2 เครื่อง ข้อมูลจะทำการอัพเดททั้ง 2 เครื่อง Replica Mirror ในระดับการทำงานนั้นจะมีอยู่ 3 ประเภท ดังนี้ Replica Mirror Directory Replica Mirror Partition Replica Mirror Disk 1.Replica Mirror ในระบบดับ Master Directory >>>>>>>> Slave Directory One way เป็นการทำงานของ Mirror จาก เครื่อง Mirror Master ไปยัง Mirror Client ทางเดียว สามารถเลือก Directory ที่จะไม่ทำการ Replication ได้ เมื่อ Delete ไฟล์ที่เครื่องที่เป็น Mirror Client เครื่อง Mirror Master จะไม่ถูกลบด้วย การส่ง tranfer ข้อมูลนั้นเข้ารหัส Authorized_keys 2.Replica Mirror ระดับ Partition เป็นการทำงานที่ทำการ Replica ในระบบดับ Master Partition to Slave Partition เช่น /home >>>>> /home เป็นต้น 3.Replica Mirror ระดับ Disk เป็นการทำงานโดยการ Replica ในระดับ Master Disk to Slave Disk เช่น /dev/sbd >>>>> /dev/sbd เป็นต้น ข้อมูล Update Real-time นั้นจะมีการเปลื่ยนเป็นอย่างไรนั้น ได้ทำการยกตัวอย่าง 3 ข้อด้านล่างให้เห็นถึงการทำงานของ Mirror 1.การเปลื่ยนแปลงการ Update Software ของทางโปรแกรมเมอร์ ในระดับ Real-time 2.การเปลื่ยนแปลงจากการไม่นำข้อมูลต่างๆ เช่น Log หรือข้อมูลที่ไม่เกี่ยวข้องมาใช้งาน 3.การเปลื่ยนแปลงจาก User ได้มีการ Update ข้อมูลต่างๆ เข้ามาเช่น มีการอัพเดทไฟล์รูปภาพ แก้ไข Code เป็นต้น __________________________________________________________________________________________________ Netway Communication ให้บริการด้าน Load Balancer พื้นฐานสำหรับธุรกิจ เป็นตัวแทนแบรนด์ไอทีชั้นนำมากมาย Office 365, Google Workspace, Zendesk, SSL ฯลฯ เรามีเจ้าหน้าที่พร้อมดูแลคุณ 24 ชม. ติดต่อเราเพื่อสอบถามผลิตภัณฑ์ ขอราคา หรือปรึกษาเรื่องไอที ได้เลยค่ะ Line : @netway (มี @ ด้านหน้า) หรือ https://bit.ly/line-netway Facebook : m.me/netway.offcial Tel : 02-055-1095 Email : support@netway.co.th Web Chat : https://netway.co.th/ #ให้เราช่วยคุณเรื่องไอที #การสื่อสาร Netway #มีครบจบที่เดียว #Netway Communication #NetwayTraining #NetwayConnect #Load Balancer
วิธีการตั้งค่าใช้งานเบื้องต้น1. ทำการแก้ไขไฟล์ที่ nano -w /etc/haproxy/haproxy.cfg2. เลื่อนลงมาข้างล่างสุดเพื่อทำการแก้ไข Host และ IP เครื่องเว็บเซิร์ฟเวอร์ที่จะทำ Loadbalancer3. ตัวอย่างการใส่ค่า server {Host} {IP:Port} cookie {Host} checkแทนเครื่องเว็บเซิร์ฟเวอร์เครื่องที่ 1 server webserv1 203.78.98.153:80 cookie webserv1 check # backend server แทนเครื่องเว็บเซิร์ฟเวอร์เครื่องที่ 2 server webserv2 203.78.98.158:80 cookie webserv2 check # backend serverกรณีที่เรามีเครื่องเว็บเซิร์ฟเวอร์มากกว่า 2 เครื่องก็สามารถใส่เพิ่มเข้าไปได้เลย 4.ทำการ save และ ทำการ restart service haproxy systemctl restart haproxy.service __________________________________________________________________________________________________ Netway Communication ให้บริการด้าน Load Balancer พื้นฐานสำหรับธุรกิจ เป็นตัวแทนแบรนด์ไอทีชั้นนำมากมาย Office 365, Google Workspace, Zendesk, SSL ฯลฯ เรามีเจ้าหน้าที่พร้อมดูแลคุณ 24 ชม. ติดต่อเราเพื่อสอบถามผลิตภัณฑ์ ขอราคา หรือปรึกษาเรื่องไอที ได้เลยค่ะ Line : @netway (มี @ ด้านหน้า) หรือ https://bit.ly/line-netway Facebook : m.me/netway.offcial Tel : 02-055-1095 Email : support@netway.co.th Web Chat : https://netway.co.th/ #ให้เราช่วยคุณเรื่องไอที #การสื่อสาร Netway #มีครบจบที่เดียว #Netway Communication #NetwayTraining #NetwayConnect #Load Balancer
Load Balancer คือ ระบบเซิร์ฟเวอร์ที่มีประสิทธิภาพสูง รองรับการทำงานทีมีปริมาณงาน (Workload) เป็นจำนวนมากได้เป็นอย่างดี เกิดจากการนำเซิร์ฟเวอร์หลายๆ เครื่องที่มีหน้าที่การทำงานเดียวกันมาทำงานร่วมกันเพื่อกระจายปริมาณงานไปยังแต่ละเครื่อง ทำให้ระบบสามารถรองรับการทำงานหนักๆ ได้เป็นอย่างดี มีความยืดหยุ่นในการออกแบบระบบให้เหมาะกับทุกๆ สถานการณ์ เพื่อตอบสนองความต้องการของคุณอย่างแท้จริง ทำไมต้องใช้ Load Balancer ? เพราะความต้องการใช้งานที่เพิ่มขึ้น ทำให้ต้องหาวิธีการรองรับ เพื่อไม่ให้เกิดปัญหา Over Load จนเครื่อง Web Server, Application Server หรือ Database Server ไม่สามารถให้บริการได้ การทำ Server Load Balance เป็นอีกวิธีการหนึ่งที่จะสามารถช่วยแก้ปัญหาได้ โดยที่ไม่จำเป็นต้องซื้อเครื่องที่ Spec สูงมากๆ ซึ่งมีราคาแพงมาเปลี่ยนแทนเครื่องเดิม แต่สามารถใช้เครื่องที่ Spec เท่าๆกันหลายเครื่อง มาทำงานร่วมกันแทน โดยการทำ Load Balance ในบางกรณีจะทำให้ได้ ระบบมีประสิทธิภาพสูงและความเสถียรมากกว่าการใช้เครื่องใหญ่ๆ เครื่องเดียวอีกด้วย โดยหลักนิยมใช้งานกันส่วนมากจะเป็นทั้ง 3 วีธีดังนี้ 1.Round Robin เป็นการส่ง Traffic ไปยัง Server ภายในกลุ่มวนไปเรื่อย เช่น 1,2,3,… 2.Sticky เป็นการส่ง Traffic โดยยึดติดกับ Session ที่ User เคยเข้าไปใช้งาน 3.Work Load เป็นการส่ง Traffic โดยดูที่ Performance ของ Server ภายในกลุ่มเป็นสำคัญ Load Balancer Software ที่นำมาใช้หลักๆจะเป็น 1.CentOS 7 เป็นระบบปฏิบัติการ 2.Software ที่เป็น Opensource คือ Haproxy มาทำเป็นตัวกระจายโหลด (Load Balancer) 3.Apache 2.4 ทำการ Run เป็นเว็บเซิร์ฟเวอร์ 4.ฐานข้อมูลนั้นนำ Mysql 5.7 มาใช้งาน 5.ในการ Sync ข้อมูลระหว่างเครื่องที่เป็นเว็บเซิร์ฟนั้นจะมี Open Source ที่ชื่อว่า Unsion มาทำการ Replicate 6.Redis เป็นตัวเก็บ Session โดยการทำงานเป็นแบบ Nosql ซึ่งนำมาเก็บ Session การเรียกใช้งานของเว็บเซิร์ฟเวอร์ รูปที่ 1 การทำงานหลักที่เรียกว่า Load Balancer จะเห็นได้ว่าจะรูปที่ 1 จะเป็นการทำงานของ User ที่มีการเรียกใช้งานจาก Web browser ต่างๆ อทิเช่น google chorme firefox IE เป็นต้น เรียกการทำงานมายังเครื่องเซิร์ฟเวอร์ที่เป็น Loadbalancer ซึ่งตัว Loadbalancer จะกระจายโหลดไปยังเว็บเซิร์ฟเวอร์แต่ละเครื่องซึ่งมาจากการ Config ไม่ว่าจะเป็น แบบ Round Robin แบบ Sticky ก็ดี อยู่ที่ลักษณะการทำงานของแต่ระบบที่จะใช้งาน ซึ่งรูปนี้จะมีการ Sync Data กันโดยนำ Unsion มาทำการ Sync ข้อมูลกับเครื่องที่เป็นเว็บเซิร์ฟเวอร์ และมีการแยกดาต้าเบสเซิร์ฟเวอร์ออกจากเครื่องที่เป็นเว็บเซิร์ฟเวอร์เพื่อให้มีการทำงานได้อย่างมีประสิทธิภาพ นอกจากนั้นนำ Redis มาติดตั้งบนเครื่องที่เป็นดาต้าเบสเซิร์ฟเวอร์เพื่อให้มีหน้าที่เก็บ Session ของการทำงาน รูปที่ 2 เป็นการ Statistics Report Statistics Report เป็นการแสดงให้เห็นถึง Status การทำงานว่ามีการใช้งานตอนนี้ไปเท่าไหร่ มีการส่ง Traffic ไปแล้วเท่าไหร่ รวมถึงบอก Status เครื่องเซิร์ฟเวอร์ว่ามีการทำงานเป็นอย่างไร Report อันนี้สามารถวิเคราะห์การเจริญเติบโตว่าควรจะเพิ่มเว็บเซิร์ฟให้เพียงพอต่อการทำงานอีกหรือไม่ Load Balancer ป้องกัน DDOS ตัวอย่างเช่น 1.สามารถป้องกันการใช้งาน Traffic Bandwidth ขนาดใหญ่ที่อาจจะมีผู้ไม่หวังดีทำงานส่งเข้ามายังเครื่องเซิร์ฟเวอร์ของเรา 2.กำหนดค่าป้องกัน IP ที่มีการติด Blacklist เช่น Barracudacentral Spamcop Spamhaus เป็นต้น 3.สามารถเขียน Acl ระบุการโจมตีจาก Bots เนื่องจากตัว Haproxy นั้นสามารถเขียน Acl ป้องกันการโจมตีเพิ่มเติมเข้าไปกับ Config ได้ 4.ป้องกันการโจมตี Syn Flood ซึ่งเป็นการโจมตีเมื่อเครื่อง Server ได้รับแพ็คเกต SYN จะจองพื้นที่ในหน่วยความจำไว้เป็นคิวเพื่อใช้สร้างการเชื่อมต่อ ซึ่งถ้าหากมีเครื่อง Client ส่งแพ็คเกต SYN เข้ามาเป็นจำนวนมากหรือส่งแพ็คเกต SYN เข้ามาจากหลายๆ เครื่องพร้อมกันจนจำนวนคิวที่มีอยู่ไม่เพียงพอ ก็จะทำให้เครื่อง Server ไม่สามารถให้บริการต่อได้ ระบบบที่นำ Monitoring สามารถใช้งานได้ดังนี้ 1.Zabbix นำมาใช้งานเพื่อรองรับการทำงานแจ้งเตือนตัวระบบบอกถึงสถานะการทำงานของ Service ต่างๆ โดยสามารถมอนิเตอร์ได้ถึงในส่วนของ Appication Layer 2.Managed Server Service จะเป็นตัวแสดงให้เห็นถึงปัญหาต่างๆที่เกิดขึ้นไม่ว่าจะเป็น Incident Problem ซึ่งได้เกิดขึ้นกับเครื่องเซิร์ฟเวอร์จะออกมาเป็นในมุมมองของ Report Who’s using it ใครที่มีการใช้งานบ้าง หลักๆที่ใช้งานตอนนี้จะมี Instagram Twitter ที่เป็นที่รู้จักกันดี เป็นต้น ที่มา https://www.haproxy.org/they-use-it.html หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับ Load Balancer หรือผลิตภัณฑ์กลุ่ม Cloud ตัวอื่นๆ สามารถติดต่อ 02-055-1095 Netway.co.th ได้ตลอด 24 ชม