How To Change Certificate Elasticsearch Cluster On Centos 7 (มาเปลี่ยน Cert กันเถอะ !)
กราบสวัสดีเพื่อนๆ ทุกคนนะครับ วันนี้ผมจะมานำเสนอวิธีการเปลี่ยน Certificate ของ Elasticsearch Cluster โดย Log ที่ส่งมาจะไม่มีการสูญหายกันครับ เริ่มด้วยการดู ELK Stack Architecture ของผมก่อนนะครับ(ตามภาพข้างล่างนี้)จะได้ไม่งง
ก่อนที่เราจะดำเนินการเปลี่ยน Certificate ให้กับ Elasticsearch Cluster เราจำเป็นต้องทำการ Persistent Queues (PQ) ก่อน เพื่อช่วยป้องกัน Log สูญหายระหว่าง Logstash ไม่สามารถส่ง Log ไปที่ Elasticsearch ได้
สิ่งแรกที่เราต้องทำ Persistent Queues (PQ) คือการเพิ่ม Parameter ที่ไฟล์ Logstash.yml จากนั้น Restart Service Logstash
[root@elastic_node-1 ~]# vi /etc/logstash/logstash.yml
queue.type: persisted
path.queue: /app/logstash/queue
queue.max_bytes: 10240mb
[root@elastic_node-1 ~]# mkdir -p /app/logstash/queue/
[root@elastic_node-1 ~]# chown -R logstash:logstash /app/logstash/
[root@elastic_node-1 ~]# systemctl restart logstash
ตรวจสอบไฟล์ว่ามีการ Write Log ลงบน Folder: /app/logstash/queue/
[root@elastic_node-1 ~]# watch ls -ltrh /app/logstash/queue/main/
Every 2.0s: ls -ltrh /app/logstash/queue/main/ Fri Mar 25 11:10:23 2022total 54M
-rw-r--r--. 1 logstash logstash 64M Mar 25 11:10 page.0
-rw-r--r--. 1 logstash logstash 34 Mar 25 11:10 checkpoint.head
ในกรณีข้างต้นเหมาะสมกับ Cluster ที่มี Logstash ตั้งแต่ 2 เครื่องขึ้นไปครับ เพราะระหว่างที่ Stop Service Logstash นั้น Log จะไม่ถูกจัดเก็บครับ
เมื่อเราได้ทำ Persistent Queues (PQ) เสร็จแล้ว จากนั้นเราจะทำการเปลี่ยน Certificate ของ Elasticsearch โดยมีขั้นตอนดังนี้
นำ Certificate ของ Elasticsearch ตัวใหม่ไปวางทับ Certificate ของ Elasticsearch ตัวเดิม (โดยทำพร้อมกันทุกเครื่องใน Cluster เลยครับ)
ในส่วนนี้ถ้า Certificate ตัวใหม่ของเราไม่มีการ เปลี่ยนชื่อ หรือว่าในกรณีที่มีการตั้ง Password ไม่มีการเปลี่ยน Password ใหม่ สามารถวางทับตัวเก่า ได้เลยโดยไม่ต้อง Restart Service ครับ
แต่ถ้า Certificate มีการเปลี่ยนชื่อหรือมีแก้ไข Config ที่ Elasticsearch.yml จะต้องเพิ่มการ Restart Service Elasticsearch เพิ่มเข้าไปด้วยครับ
หลังจากนั้นจะเป็นการตรวจสอบ Log ของ Elasticsearch ทุกเครื่องว่ามีการ Update Certificate เรียบร้อยหรือยัง โดยตามตัวอย่างด้านล่างครับ
[2022-03-25T14:26:13,199][INFO ][o.e.x.c.s.SSLConfigurationReloader] [elastic_node-1] reloaded [/etc/elasticsearch/certs/ca.crt] and updated ssl contexts using this file
[2022-03-25T14:26:13,294][INFO ][o.e.x.c.s.SSLConfigurationReloader] [elastic_node-1] reloaded [/etc/elasticsearch/certs/elastic_node-1.crt] and updated ssl contexts using this file
[2022-03-25T14:26:13,406][INFO ][o.e.x.c.s.SSLConfigurationReloader] [elastic_node-1] reloaded [/etc/elasticsearch/certs/elastic_node-1.key] and updated ssl contexts using this file
หลังจากเปลี่ยน Certificate เสร็จแล้ว หากไม่เปลี่ยน Certificate ให้กับ Logstash ด้วยจะทำให้ Logstash ไม่สามารถส่ง Log ไปที่ Elasticsearch สามารถทำตามขั้นตอนดังนี้
นำ Certificate ของ Logstash ตัวใหม่ไปวางทับ Certificate ของ Logstash ตัวเดิม แล้ว Restart Service Logstash (ทำทีละเครื่องใน Cluster)
ตรวจสอบ Status Logstash ว่าสามารถส่ง log ไปที่ Elasticsearch ได้(เช็คที่ log หรือที่หน้า Discover บน Kibana)
(***ในกรณีที่เราจะตรวจสอบได้บนหน้า Discover เราต้องเข้าหน้า Kibana >> Discover เลือก Index Pattern ไว้ก่อนที่เราจะทำการเปลี่ยน Certificate)
ตัวอย่างการเช็คผ่าน Log
[root@elk1 certs]# systemctl status logstash
● logstash.service — logstash
Loaded: loaded (/etc/systemd/system/logstash.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2022–03–25 16:32:38 +07; 10min 57s
Main PID: 17308 (java)
CGroup: /system.slice/logstash.service
└─17308 /usr/share/logstash/jdk/bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Dja…
ตัวอย่างการเช็คผ่านหน้า Discover บน Kibana
และก็มาถึงขั้นตอนการเปลี่ยน Certificate ของ Kibanaขั้นตอนก็จะคล้ายๆ กับการเปลี่ยน Certificate ของ Elasticsearch , Logstash เลยครับ คือเราจะนำ Certificate ของ Kibana ตัวใหม่ไปวางทับ Certificate ของ Kibana ตัวเดิม แล้ว Restart Service Kibana และตรวจสอบ Status Kibana และทดสอบเข้าหน้า Kibana
เป็นยังไงกันบ้างครับสำหรับการเปลี่ยน Certificate ของ Elasticsearch Cluster โดย Log ที่ส่งมาจะไม่มีการสูญหาย “ใช่วิธีการที่เพื่อนๆ ต้องการหรือไม่” หรือหากเพื่อนๆ มีวิธีการอื่นๆ สามารถกดติดตามและแชร์ Link วิธีการของเพื่อนๆ ที่ใต้คอมเม้นต์ได้เลย !!!
เพื่อนๆ ทุกคนสามารถติดตามเราได้ที่Medium ของ Sirisoft หรือ Sirisoft — Home | Facebook