Redundant Salt Master นั้นเป็นทั้ง Load balancing และ High-availability (HA) นั้นคือ Salt Minion หรือ Client จะทำการเชื่อมต่อไปยัง Salt Master ทั้งหมดที่มีใน list ของ file config Salt Minion และ Salt Master ทั้งหมดใน list มี Permission ต่อ Salt minion นั้นเท่ากัน เช่นเราสามารถสั่ง run SLS Formula หรือ list ip ในแต่ล่ะ Salt Master ได้ เป็นต้น ที่นี้เรามาดูวิธีการทำ Redundant Salt Master กันน่ะครับ

ในตัวอย่างจะมี

  • Salt Master 2 host ชื่อ saltmaster1 และ saltmaster2
  • Salt minion 1 host ชื่อ saltminion

แนะนำให้ตั้งค่าโดเมนไว้จะสะดวกในการใช้งาน แต่ถ้าไม่มีจะเพิ่มลงใน /etc/hosts ในทุกๆ เครื่องก็ได้ เปลี่ยนชื่อเครื่องและ ip address เป็นของคุณเอง

192.168.56.109  saltmaster1.example.local saltmaster1
192.168.56.110  saltmaster2.example.local saltmaster2
192.168.56.111  saltminion.example.local saltminion

ทำการเพิ่ม Host Salt Master ใน config ของ Salt-minion

เครื่อง saltminion คั้งค่าเครื่อง master ดังนี้

vi /etc/salt/minion

ใน Section “Primary configuration settings”

master:
    - saltmaster1
    - saltmaster2

แล้ว restart service Salt Minion

service salt-minion restart

เครื่อง saltmaster2

ทำการ copy file /etc/salt/pki/master/master.pem และ /etc/salt/pki/master/master.pub จาก saltmaster1 มาไว้ที่ /etc/salt/pki/master/ ของ saltmaster2

เครื่อง saltmaster1 และ saltmaster2

สั่ง Accept Minion Key โดยใช้คำสั่ง salt-key -a โดยทำที่ Salt Master ทุกเครื่อง หรือจะใช้วิธี sharing 3 directory /etc/salt/pki/master/{minions,minions_pre,minions_rejected} โดยจะใช้ Share Storage ก็ได้

ใช้ Share Storage share file root ของ salt master ให้เห็นทั้ง 2 host โดย default ของ file_roots จะอยู่ที่ /srv/salt หรือจะไปกำหนดตอนเขียน SLS Formula ก็ได้เช่น

file_roots:
  base:
    - /srv/salt

Pillar_Roots ก็ควรกำหนดให้เหมือน file_roots

เครื่อง saltmaster1

ทดสอบ run salt ‘*’ test.ping

salt '*' test.ping

ผลลัพท์

admins@saltmaster1:~$ sudo salt '*' test.ping
saltminion.example.local:
    True

เครื่อง saltmaster2

ทดสอบ run salt ‘*’ test.ping

salt '*' test.ping

ผลลัพท์

admins@saltmaster2:~$ sudo salt '*' test.ping
saltminion.example.local:
    True

จะเห็นได้ว่าสามารถสั่ง run คำสั่ง salt ‘*’ test.ping ได้ทั้ง saltmaster1 และ saltmaster2 ก็จบในส่วนการ Config Redundant Multi Salt Master ครับ

อ่านเพิ่มเติม – http://docs.saltstack.com/en/latest/topics/tutorials/multimaster.html

Comments are closed.