มาทำ WEB SERVER แบบ หลาย ๆ โหนด กันเถอะ ตอนที่ 3 (ลงมือทำ-ต่อ)

จากตอนที่แล้ว จบไปในส่วนแชร์ไฟล์ ในส่วนนี้ เรามาติดตั้งตัว web server กันครับ

กลับมาที่เครื่อง web1 และ web2 อันนี้ ทำเหมือนกันทั้งสองเครื่อง น่ะครับ

อย่าลืม sudo -i เป็น root ก่อนน่ะครับ

apt-get install libapache2-mod-php5  apache2 -y

แก้ไขไฟล์ /etc/apache2/mods-enabled/dir.conf
เพิ่ม index.php ตามข้างล่างเลยครับ ให้ apache รันไฟล์ index.php ก่อน

<IfModule mod_dir.c>

DirectoryIndex index.php index.html index.cgi index.pl index.php index.xhtml index.htm

</IfModule>

ติดตั้ง PHP Modules ส่วนผมมักจะติดตั้งเท่าที่ใช้ ก็ 
apt-get install php5-curl php5-gd php5-mysql -y

แล้วติดตั้ง php5-memcache ด้วย อันนี้สำคัญมากกับระบบหลายโหนดเราครับ เพาเอาไว้เก็บ SESSION แทน ที่จะเก็บแบบเดิม ๆเป็นไฟล์ในเซิฟ

apt-get install php5-memcache -y

แล้วจัดการแก้ไข ให้ ระบบไปเรียกพาส เว็บที่เราทำการ mount ตามที่ ทำไว้ในตอนที่แล้ว มาไว้ที่ /www

แก้ไขไฟล์ /etc/apache2/sites-enabled/000-default.conf

บรรทัด DocumentRoot /var/www/html แก้เป็น DocumentRoot /www

เพิ่ม

<Directory /www/>

Options Indexes FollowSymLinks

AllowOverride All

Require all granted

</Directory>

ใต้บรรทัด DocumentRoot /www

แก้ไข php.ini ให้ เก็บค่า SESSION ไว้ใน memcached ที่เซิฟกลาง 172.30.0.197

แก้ไขไฟล์ /etc/php5/apache2/php.ini

แก้จาก session.save_handler = files

เป็น
session.save_handler = memcache
session.save_path=”tcp://172.30.0.197:11211"

เซฟ แล้ว รัน apache ใหม่

/etc/init.d/apache2 restart

เสร็จแล้วกลับไปที่เครื่อง server หลัก

ติดตั้ง memcache server

apt-get install memcached -y

แก้ไขไฟล์ /etc/memcached.conf เพื่อให้รับ connection ในวงแลนได้

ค้าหาบรรทัด -l 127.0.0.1 แก้เป็น -l 172.30.0.197

เสร็จแล้วรันใหม่ 
/etc/init.d/memcached restart

เหลือ ส่วนสุดท้ายล่ะครับ เสร็จไป 80 % แล้วที่เหลือ แค่ Installing HAProxy พระเอกของงานนี้

ทำที่เครื่องหลักเครื่องเดียวน่ะครับ 172.30.0.197

apt-get install haproxy -y

แก้ไขไฟล์ /etc/default/haproxy

หา ENABLED=0 แก้เป็น ENABLED=1

เซฟค่าซะ

ทำการแบล๊คอัพไฟล์ค่าเดิมก่อน

cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.ori

แก้ไข /etc/haproxy/haproxy.cfg ลบค่าเดิมออกให้หมด แก้เป็น

ตัวอย่างนี้ ผมทำ ให้ check port 80

global
log 127.0.0.1   local0
log 127.0.0.1   local1 notice
#log loghost    local0 info
maxconn 4096
#debug
#quiet
user haproxy
group haproxy
defaults
log     global
mode    http
option  httplog
option  dontlognull
retries 3
option redispatch
maxconn 2000
contimeout      5000
clitimeout      50000
srvtimeout      50000
listen webfarm 172.30.0.197:80
mode http
stats enable
stats uri /haproxy?stats
stats auth admin:1234
balance roundrobin
cookie JSESSIONID prefix
option httpclose
option forwardfor
option httpchk GET /check.txt
server WEB1 172.30.0.198:80 cookie A check
server WEB2 172.30.0.196:80 cookie B check

เซฟค่าจาก ค่าคอนฟิกผมทำให้เช็ค ว่าเจอไฟล์ /check.txt มั้ย เราก็สร้างไฟล์นี้ไนพาสเว็บ

touch /data/www/check.txt

chmod 777 /data/www/check.txt

ทดสอบเข้า http://172.30.0.197 จะต้องเข้าหน้าเว็บได้ไม่มี error ใด ๆ

ทดสอบ ปิด บางเครื่องทิ้ง ระบบต้องไม่กระทบ ไม่ดาวน์

ที่เหลือก็ใส่ ไฟล์เว็บลงไปที่ /data/www จะเพิ่มโหนด ก็ปรับคอนฟิก /etc/haproxy/haproxy.cfg เอา แล้ว ก็ ลงตาม ด้านบน ก็จบครับ จะแอดเพิ่มก็ง่าย ๆ เลย

จะดู status ก็เข้า http://172.30.0.197/haproxy?stats

user admin pass 1234

จากรูป ผมปิด เว็บหนึ่งเลยเป็นสีแดง

แต่เดียวก่อน เรายังมีเคส mysql เรียกข้ามเครื่อง

ก็ไปที่เครื่องหลัก แอดยูส mysql ที่มีสิทธ์ เรียกข้ามเครื่องๆ ได้

เรามีสองเครื่องก็แอดไป ตามตัวอย่าง

mysql -uroot -p รหัสผ่าน

ผมจะแอด ยูส แอดมิน pass 1234 เข้าได้จากวง WEB1 , WEB2

แนะนำให้พิมฑ์ตามนี้

mysql> CREATE USER ‘admin’@’WEB1' IDENTIFIED BY ‘1234’;
mysql> CREATE USER ‘admin’@’WEB2' IDENTIFIED BY ‘1234’;
mysql> GRANT ALL PRIVILEGES ON *.* TO ‘admin’@’WEB1';
mysql> GRANT ALL PRIVILEGES ON *.* TO ‘admin’@’WEB2';

ทดสอบว่าใช้ได้มั้ย ไปที่เครื่อง เว็บ ติดตั้ง mysql-client

apt-get install mysql-client -y

แล้วทดสอบคอนเน็คดู

ติดต่อ mysql ข้ามเครื่องได้แย้ววว

ตอนหน้า มาเทสโหลด กัน เป็นตอนสุดท้าย

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.