เรามาเป็นแอดมินได้ไง

tl;dr ไม่รู้เหมือนกัน 55+

ปี 3 วิชา Computer Networks สอน TCP/IP (อ.ยืน อ.เขมทัต อ.ปรีดา ม.เกษตร) ประกอบกับที่ภาคคอมคณะไรสักอย่างได้รับเครื่อง SUN SPARCStation 5 มาจากมูลนิธิ Hitachi เครื่องนี้ต่ออินเทอร์เน็ตผ่าน MODEM + leased line ไปที่ศูนย์คอมพิวเตอร์ ผมกับเพื่อนไม่กี่คนมี account บนเครื่องนี้ telnet จาก PC ไปหัดใช้คำสั่ง UNIX ใช้อินเทอร์เน็ตได้ (pine, talk, gopher, inn, irc (#thai #siam …)) .. ตอนนั้นเป็นของใหม่ ของแพง(มาก) มีโอกาสได้ใช้ก็ตื่นตาตื่นใจ

ปี 4 เพื่อนคนนึงทำโปรเจคเกี่ยวกับอินเทอร์เน็ต ขอเครื่อง 486 มาลง BSD ได้แผ่นติดตั้ง 3.5 นิ้วมาจากอาจารย์ฝรั่งที่มาบวชที่ขอนแก่น อ.ฝรั่งท่านนี้เก่ง ใจดี ให้คำแนะนำเรื่อง UNIX เยอะแยะ (อาชีพเพิ่นจริงๆ คือออกแบบวงจรเครื่องเสียง – มีชื่อเสียงด้วยนะ) หลังจากได้แผ่น BSD มาหลายกล่องได้ไม่นาน มันกลายเป็นแผ่นติดตั้ง Slackware Linux แทน 555+ .. Slackware ตอนนั้นใช้ แผ่น 3.5 นิ้ว 1.44 MB จำนวน ~ 30 แผ่น ดาวน์โหลดผ่านอินเทอร์เน็ตได้วันละ 1 แผ่น เดือนต่อมาถึงได้ติดตั้งลงเครื่องเป็น linux kernel 1.0.x ต่ออินเทอร์เน็ตผ่าน MODEM อยู่ห้องโปรเจคภาคฯ ไปศูนย์คอมพิวเตอร์ เครื่องนี้เป็น linux 1 ใน 2 เครื่องแรกของ มข. (อีกเครื่องเป็นของอาจารย์ อยู่ภาคชีวเคมี เกิดในเวลาใกล้ๆ กัน) และตั้งชื่อว่า gear.kku.ac.th

ช่วงนี้ผมกับเพื่อนเริ่มเดินเข้า/ออกศูนย์คอมพิวเตอร์หาพี่พงษ์บ่อยๆ จนมี account บน kku1.kku.ac.th (SUN) และอีกหลายเครื่อง (SUN) ช่วยเพื่อนติดตั้ง/admin ftp.kku.ac.th / malakor.kku.ac.th พ่วง MODEM ทำ slirp/tia ให้คอมพิวเตอร์ที่บ้านรัน Windows 3.1 + Trumpet Winsock ต่อใช้อินเทอร์เน็ตได้โดยหมุน MODEM มาที่ศูนย์คอมฯ

ต้องระลึกชาติกันว่า ปี 2537 นี่เพิ่งจะมีอินเทอร์เน็ตในประเทศได้ไม่กี่ปี / ThaiSARN เพิ่งเกิดไม่นาน / ISP ในประเทศไทยยังไม่มีบริการตามบ้าน / มข. ต่ออินเทอร์เน็ตแถวๆ 9.6 – 19.2 – 64 kbps / Trumpet Winsock ตอนนั้นเกือบทั้งหมดใช้กับ Ethernet / MODEM มีไว้ต่อ terminal หรือ BBS .. หมุน MODEM ต่ออินเทอร์เน็ตเปิด Mosaic/Netscape เข้าเว็บจากเครื่องที่บ้านได้นี่โคตร breakthrough .. คิดเข้าข้างตัวเองว่า เวลานั้นเป็นคนแรกใน มข. ที่ทำได้ 555+

พอมีทักษะโปรแกรม + UNIX + network + security ทำเอามันบ่อยๆ สันดาน hacking/troubleshooting ใน domain นี้ก็สะสมมาเรื่อย
จบ ป.ตรี บรรจุเป็นอาจารย์ (ใช้หนี้ทุน) ดูแลเครื่อง gear.kku.ac.th ต่อจากเพื่อน กลายเป็นเครื่องแม่ข่ายอินเทอร์เน็ตหลักของภาคคอมแทน SUN + ติดตั้งเครื่องเพิ่มอีกหลายเครื่องที่เป็น linux ให้ นศ. ใช้ เป็นช่วงนี้ web กำลังนิยม ก็หัดทำเว็บเขียนเว็บ Netscape กำลังได้รับความนิยม ก็ดูดมาพักไว้ที่ มข. เป็น Netscape Official Mirror Site แห่งแรกในประเทศไทย ประกอบกับที่ภาคคอมฯ เป็นชุมสาย campus network ของคณะไรสักอย่าง สอนวิชา networks ด้วย มีโอกาสได้ดูแลระบบเครือข่ายไปด้วย

ช่วงเรียนต่อ มีโอกาสดูแลระบบของ lab ได้อานิสงส์จากบารมีของอาจารย์ที่ปรึกษา (ที่เพิ่งจะได้รางวัล Jonathan B. Postel Service Award ของปีนี้) ได้พบบุคคลในตำนานอินเทอร์เน็ตโลกอีกหลายคน มีโอกาสไป workshop เป็นลูกมือจัด workshop พบ sysadmin เก่งๆ geekๆ nerdๆ หลายคน

.. และบางคนก็กวนตีน เช่น sysadmin ชาวญี่ปุ่น เป็นคนดูระบบเมลของ ISP ใหญ่ที่สุดแห่งนึงในญี่ปุ่น อยากได้อะไรมันเขียน sendmail.cf from scratch ได้หมด (ย้ำว่า .cf – human-unreadable config – from scratch) อยู่มาวันหนึ่งมันบอกว่า “กูย้ายไปใช้ postfix หมดแล้วนะ ชีวิตดี๊ดี มึงจะตามมาไหม ?” เอ้า! บักนี่ ! 55+

งานตอนนี้ ใช้ทุกอย่างที่สะสมมาตั้งแต่บรรทัดแรก (^^’)

เรามาเขียนโค้ดได้ไง

ปี 2529 อยู่ ม.2 ไม่เคยเล่นเกม ไม่เคยใช้โปรแกรมสำเร็จรูป แตะคอมพิวเตอร์ครั้งแรกก็หัดโค้ดเลย

มันคือเครื่อง VTech Laser 200 (https://en.wikipedia.org/wiki/VTech_Laser_200)

ROM เป็น BASIC interpreter สมัยนั้นเรียกของพวกนี้ว่า home computer ก็ไม่แน่ใจว่าเครื่องนี้เป็นของใคร แต่มันวางอยู่ที่บ้านที่ไปอาศัยอยู่ช่วงนั้น หัดจากคู่มือของเครื่อง (ภาษาอังกฤษ) หนังสือตัวอย่างโปรแกรมที่แถมมา จนเขียน BASIC เป็น

ม.ปลาย ที่โรงเรียนสอนภาษา Logo .. ช่วงนั้นมีเครื่อง PC ที่บ้านแล้ว รับจ้างเขียนโปรแกรม พิมพ์รายงาน

ป.ตรี รับจ้างเขียน inventory ให้ รพ.ศรีนครินทร์ (Clipper/Netware) โปรเจคจบเขียน C/C++ เป็นโปรแกรมบน Windows

ป.โท ระหว่างเรียนเขียน C, C++, CLIPS, LISP, Prolog, OCaml, Smalltalk, YACC, Lex, Java

ป.เอก เข้ารีต F/OSS ทำ packages ให้ LinuxTLE เขียนตาม upstream ใช้ภาษาไหนก็โค้ดภาษานั้น coding style แบบไหนก็ต้องตามนั้น เพลินมากจนเกือบเรียนไม่จบ 555+

อืม .. เดี๋ยวนะ ผมอยู่สาย sysadmin/ops มาตั้งแต่เรียน ป.ตรี นะหนิ (^^)a

€2.99/mo. Scaleway VC1S

Same tools, same OS as $5/month: DigitalOcean vs Vultr

dd write bs=4k count=10k  100k  1M
                     403   398  184 MB/s
dd read bs=4k 
2.0 GB/s
sysbench --test=cpu --cpu-max-prime=10000 run
17.9875 sec.
stress-ng --cpu 1 --cpu-method all -t 30
94.22 ops/sec

The disk performance is comparable to those of DO/Vultr. But, even equipped with 2 x 64-bit x86 processor, CPU performance is lower than single core on $5/mo. VPS of DO/Vultr.

Since I use them as a web server, so I run ab -n500 -c500 requesting phpinfo() ..

phpinfo() 
Vultr:    2102.08 req./sec
Scaleway: 1543.10 req./sec

YMMV.

$5/month: DigitalOcean vs Vultr

Tools: dd, sysbench, stress-ng. I know,  you’d say they are NOT benchmark tools. I don’t care, I just need quick tests.

Here we go:

dd write bs=4k count=10k   100k  1M
do:                  350   465   424 MB/s
vultr:               699   538   466 MB/s
dd read bs=4k
do:    475 MB/s
vultr: 2.7 GB/s
sysbench --test=cpu --cpu-max-prime=10000 run
do:    14.2562 sec.
vultr: 13.7561 sec.
stress-ng --cpu 1 --cpu-method all -t 30
do:    154.15 ops/sec
vultr: 186.38 ops/sec

/me .. goes vultr.

พระบาทสมเด็จพระเจ้าอยู่หัวสวรรคต

ฉันทราบข่าวในตอนเย็นของวันที่ ๑๓ ตุลาคม ๒๕๕๙

ตลอดเวลา ๒ ปีก่อนหน้านั้น ฉันรู้ว่าเหตุการณ์นี้จะมาถึง ตั้งแต่ข่าวพระราชกรณียกิจหายไปจากโทรทัศน์ ข่าวเสด็จเข้ารักษาที่ศิริราช – รพ.ที่พระบิดาของพระองค์เป็นผู้สร้าง – ฉันถอนหายใจทุกครั้งที่ได้ทราบข่าวจากสำนักราชวัง จะทั้งหนักใจ หรือโล่งใจในบางคราว

ก่อนหน้าไม่กี่วัน ฉันได้คุยกับหมอที่นับถือ คุณหมอตอบให้ฉันเข้าใจได้ว่าจากแถลงการณ์สำนักราชวังนั้น เราเหลือเวลาอีกไม่นานจริงๆ

สองวันจากนั้น  วันที่ ๑๓ ตุลาคม ๒๕๕๙ รัชกาลที่ ๙ ในราชวงค์จักรีสวรรคต

ฉันรู้สึกชา ไม่ได้ร้องไห้เลย ฉันมีหน้าที่ต้องทำในคืนนั้น หน้าที่ที่ต้องทำอย่างเหมาะสม ในฐานะข้าราชการในพระองค์

เช้าวันรุ่งขึ้น ฉันขับรถมาทำงานตามปกติ

แลเห็นธงครึ่งเสา .. ฉันกลั้นน้ำตาไม่อยู่

สำหรับฉัน พระบาทสมเด็จพระเจ้าอยู่หัว สอนให้ฉันมีความเพียร ทำประโยชน์เพื่อคนอื่น เป็นพระองค์หนึ่งที่ทำให้ฉันรู้ว่า

“ชาตินี้ ฉันเกิดมาเพื่ออะไร”

do-release-upgrade and PHP7

16.04.1 ออกมาได้ประมาณหนึ่งสัปดาห์ 14.04 ก็เริ่มจะ upgrade กันได้ วันนี้สั่ง do-release-upgrade เรียบร้อยดี

ลง PHP7 เพิ่ม / เอา PHP5 ออก / แก้ไข socket path = เว็บกลับมาปกติ

ง่ายเกินไปนะ :P

ceph

วันนี้ ceph เดี้ยง

สืบพบว่ามาจาก monitor node 2 ใน 3 ตัว ..  ทั้งสองตัว เป็น VM connect ได้ daemon running  แต่ disk ของตัว host เป็น read-only .. พอ monitor พยายามบันทึกข้อมูลลง disk ไม่ได้มันก็ค้าง พอ monitor ค้าง ceph cluster ทั้งก้อนหยุดทำงาน

ได้ใช้ท่า troubleshooting: stop monitor / dump monmap / ลบ monitor node ที่ใช้งานไม่ได้ออกไปจาก monmap / inject monmap ตัวใหม่เข้า monitor node ที่ใช้งานได้

restart monitor

คืนชีพ (^^)v

Password authentication must die .. soon.

Password authentication depends on user input. To make it safe, one of the requirement is that you need to do it safely and quickly enough and hope that nobody could catch what you type on the keyboard.

Nowadays, we can’t hope such.

With naked eyes, we can simply read gestures, types, presses most of people do when they unlock their phone. With cameras, you can replay – in slow motion.

This is not new at all. Though, nowadays, cameras are everywhere, videos are publicly available, big data, machine learning, if you put them together, you can extract a person’s password from such sources.

Many IT vendors already knew this for years. That’s why they started pushing biometrics like fingerprint scans, face recognition in their products, and encourage their users to use it – at least, as one factor of their authentication methods.

IMHO, the password authentication should completely be eliminated. We should not even use it as a factor in authentication ecosystem – it must die.

Let me hope it will – soon.

BTW, researches on replacing password authentication are very welcome. :)

Using docker-machine to deploy multi-manager docker swarm

Of course, HA is a must in production environment. So, you gonna need multi-manager docker swarm. It is super easy when you know how.

First, you cannot use token, you need a discovery service (consul, etcd, zookeeper). So, create one if you don’t have, e.g.

$ docker-machine create -d virtualbox consul
$ docker-machine ssh consul
docker@consul:~$ docker run -d --name consul \
  --net host gliderlabs/consul-server \
  -advertise 192.168.0.100 \
  -bootstrap-expect 1

Next,  create multiple swarm managers (we have obsoleted the term swarm master, though.)

$ docker-machine create -d virtualbox --swarm \
  --swarm-master \
  --swarm-opt replication \
  --swarm-discovery consul://192.168.0.100:8500 \
  --engine-opt cluster-store=consul://192.168.0.100:8500 \
  manager-0 
$ docker-machine create -d virtualbox --swarm \
  --swarm-master \
  --swarm-opt replication \
  --swarm-discovery consul://192.168.0.100:8500 \
  --engine-opt cluster-store=consul://192.168.0.100:8500 \
  manager-1

Note that you need –swarm-master and –swarm-opt replication to make this works. Now, you have it. You can either

$ eval $(docker-machine env --swarm manager-0)

or

$ eval $(docker-machine env --swarm manager-1)

Check the “role” line, one will be the primary, the others will be replicas.

Normally, you would want to set docker environment to the primary. Somehow, if the primary has failed, one of the replicas will takeover and you can set the environment to the replica to control your swarm cluster. You can later recover the failed manager, or create a new manager.

Easy, right ? ;)