How To Change Certificate Elasticsearch Cluster On Centos 7 (มาเปลี่ยน Cert กันเถอะ !)

Tewich
Sirisoft
Published in
3 min readApr 1, 2022

กราบสวัสดีเพื่อนๆ ทุกคนนะครับ วันนี้ผมจะมานำเสนอวิธีการเปลี่ยน Certificate ของ Elasticsearch Cluster โดย Log ที่ส่งมาจะไม่มีการสูญหายกันครับ เริ่มด้วยการดู ELK Stack Architecture ของผมก่อนนะครับ(ตามภาพข้างล่างนี้)จะได้ไม่งง

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 2022
total 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

หน้า Discover บน Kibana

และก็มาถึงขั้นตอนการเปลี่ยน Certificate ของ Kibanaขั้นตอนก็จะคล้ายๆ กับการเปลี่ยน Certificate ของ Elasticsearch , Logstash เลยครับ คือเราจะนำ Certificate ของ Kibana ตัวใหม่ไปวางทับ Certificate ของ Kibana ตัวเดิม แล้ว Restart Service Kibana และตรวจสอบ Status Kibana และทดสอบเข้าหน้า Kibana

หน้า Kibana

เป็นยังไงกันบ้างครับสำหรับการเปลี่ยน Certificate ของ Elasticsearch Cluster โดย Log ที่ส่งมาจะไม่มีการสูญหาย “ใช่วิธีการที่เพื่อนๆ ต้องการหรือไม่” หรือหากเพื่อนๆ มีวิธีการอื่นๆ สามารถกดติดตามและแชร์ Link วิธีการของเพื่อนๆ ที่ใต้คอมเม้นต์ได้เลย !!!

เพื่อนๆ ทุกคนสามารถติดตามเราได้ที่Medium ของ Sirisoft หรือ Sirisoft — Home | Facebook

--

--