ตั้งค่าเครื่อง Broker Host

ระหว่างการรอ download packages ติดตั้งทางฝั่ง Broker สามารถที่จะ boot Node ขึ้นมาติดตั้งไปด้วยก็ได้นะครับ ขั้นต่อไปเรามาติดตั้งระบบต่างๆ ที่จำเป็นบนเครื่อง Broker กันครับเครื่อง Broker ก็มีหน้าที่เหมือนชื่อมันนั่นแหละคือประมาณเป็นตัวกลางคอยรับงานมาแล้วกระจายไปยัง Node อีกที อยากรู้มากกว่านี้ไปหาอ่านเอาครับผมก็ยังไม่อ่านเหมือนกัน ฮาๆ

ตั้งค่า DNS Server

* BROKER Host

มา setup DNS server กันก่อนเพราะการติดต่อสื่อสารกันต้องใช้ชื่อแทน IP จะได้ง่ายๆ และจำเป็นสำหรับการทำ vHost ให้กับ Gear ต่างๆ ด้วย มาลุยกันเลย

BIND

Bind จะทำหน้าที่เป็น DNS Server ซึ่งขั้นตอนการติดตั้งและตั้งค่ามีดังนี้ ติดตั้ง bind โดยใช้คำสั่ง yum -y install bind bind-utils

ตั้งค่าระบบ และ DNSSEC key file

set ค่าตัวแปรชั่วคราว domain กับ keyfile เพื่อความสะดวกในการเรียก จะได้ไม่เกิดปัญหาเรื่องพิมพ์ชื่อผิด

domain=example.com
keyfile=/var/named/${domain}.key
myip=$(ifconfig eth0 | sed -En 's/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p')

สร้าง DNSSEC key ใหม่

cd /var/named
rm -f K${domain}*
dnssec-keygen -a HMAC-MD5 -b 512 -n USER -r /dev/urandom ${domain}
KEY="$(grep Key: K${domain}*.private | cut -d ' ' -f 2)"
echo $KEY

เมื่อสั่งคำสั่งด้านบนเสร็จแล้วให้ตรวจสอบว่าค่า KEY ที่ได้ว่างเปล่าหรือมีค่า ถ้าว่างเปล่าแสดงว่าขั้นตอนสร้าง key อาจจะไม่ถูกต้องให้ไล่ใหม่

สร้าง rndc key สำหรับ BIND

rndc-confgen -a -r /dev/urandom

set ค่า SELinux และ สิทธิ์การใช้งานให้กับ key file ที่สร้างขึ้นมา

restorecon -v /etc/rndc.* /etc/named.*
chown -v root:named /etc/rndc.key
chmod -v 640 /etc/rndc.key

สร้าง  fowarders.conf file

ตรงนี้นิยมใช้ 8.8.8.8 ของ google เพราะเรียกได้เกือบทุกที่ แต่ถ้ามีปัญหาก็อาจจะใช้ DNS Server ของคุณที่ใช้ออกภายนอกแทนได้

echo "forwarders { 8.8.8.8; 8.8.4.4; } ;" >> /var/named/forwarders.conf
restorecon -v /var/named/forwarders.conf
chmod -v 640 /var/named/forwarders.conf

ค่าใน forwarders.conf จะใช้ในกรณีที่ค้นหาภายในระบบของเราไม่เจอก็จะไปถามที่เราตั้งไว้แทน ซึ่งระหว่างที่ผมทดสอบระบบ ผมก็ใช้ DNS Servcer ของ Broker อย่างเดียวบน OS X เพราะเครื่องผมจะได้รู้จักชื่อในระบบที่เรากำลังทำอยู่ด้วย และ ยังสามารถออกเน็ทข้างนอกผ่าน forwarders ได้อีกด้วย (เข้าใจปะ)

สร้าง subdomain และ DNS Database

cat <<EOF > /var/named/dynamic/${domain}.db
\$ORIGIN .
\$TTL 1 ; 1 seconds (for testing only)
${domain}       IN SOA  ns1.${domain}. hostmaster.${domain}. (
2011112904 ; serial
60         ; refresh (1 minute)
15         ; retry (15 seconds)
1800       ; expire (30 minutes)
10         ; minimum (10 seconds)
)
A   ${myip}
NS  ns1.${domain}.
MX  10 mail.${domain}.
\$ORIGIN ${domain}.
broker     A   ${myip}
ns1        A   ${myip}
ns1        A   127.0.0.1
EOF

ลองตรวจสอบว่าข้อมูลครบถ้วนหรือไม่โดยใช้คำสั่ง cat /var/named/dynamic/${domain}.db ของผมจะได้ผลลัพธ์แบบนี้

$ORIGIN .
$TTL 1 ; 1 seconds (for testing only)
example.com       IN SOA  ns1.example.com. hostmaster.example.com. (
2011112904 ; serial
60         ; refresh (1 minute)
15         ; retry (15 seconds)
1800       ; expire (30 minutes)
10         ; minimum (10 seconds)
)
A   192.168.5.1
NS  ns1.example.com.
MX  10 mail.example.com.
$ORIGIN example.com.
broker    A   192.168.5.1
ns1    A   192.168.5.1
ns1    A   127.0.0.1

ผมใส่ A ${myip} ไปด้วยเพื่อให้ example.com มี IP ด้วยเพื่อความเท่นะครับ ส่วนบรรทัด broker A ${myip} ก็เพื่อให้ node และ เครื่อง HOST OS ของ VirtualBox รู้จักด้วย เช่นเดียวกับ ns1 A ${myip}

สร้าง key file ให้กับ DNSSEC

cat <<EOF > /var/named/${domain}.key
key ${domain} {
algorithm HMAC-MD5;
secret "${KEY}";
};
EOF

สร้าง named configuration file

cat <<EOF > /etc/named.conf
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
listen-on port 53 { any; };
directory   "/var/named";
dump-file   "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query     { any; };
recursion yes;

/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";

// set forwarding to the next nearest server (from DHCP response
forward only;
include "forwarders.conf";
};

logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};

// use the default rndc key
include "/etc/rndc.key";

controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};

include "/etc/named.rfc1912.zones";

include "${domain}.key";

zone "${domain}" IN {
type master;
file "dynamic/${domain}.db";
allow-update { key ${domain} ; } ;
};
EOF

ตั้งสิทธิ์และ SELinux

chown -Rv named:named /var/named
restorecon -rv /var/named
chown -v root:named /etc/named.conf
restorecon /etc/named.conf

ตั้งค่าเครื่อง Broker ให้ใช้ DNS Server ใหม่

ให้แก้ไข file  /etc/resolv.conf

cat <<EOF >/etc/resolv.conf
domain example.com
search example.com
nameserver 127.0.0.1
EOF

ใส่ค่า search example.com ไว้ด้วยเวลาเราเรียก จะได้เรียกแค่ชื่อ host เช่นเวลา ping ก็เรียกแค่

ping node
ping broker

เปิด firewall และ เปิด service

lokkit --service=dns
chkconfig named on

เริ่มใช้งาน DNS Server โดยใช้คำสั่ง ด้านล่าง boot ครั้งต่อไปไม่ต้องสั่งนะครับเพราะเราเปิด service ไว้แล้ว

service named start ลอง ping broker ping broker

PING broker.example.com (192.168.5.1) 56(84) bytes of data.
64 bytes from 192.168.5.1: icmp_seq=1 ttl=64 time=0.018 ms

หรือใช้คำสั่ง dig

dig example.com
dig broker.example.com

ปรับแก้ ifcfgX

ให้เพิ่มค่าใน

/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth1
myip=$(ifconfig eth0 | sed -En 's/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p')

cat <<EOF>>/etc/sysconfig/network-scripts/ifcfg-eth0
PEERDNS=no
DNS1=${myip}
EOF

cat <<EOF>>/etc/sysconfig/network-scripts/ifcfg-eth1
PEERDNS=no
DNS1=${myip}
EOF
  • ค่า PEERDNS=”no” คือไม่ต้องรับค่า DNS จาก DHCP Server
  • ค่า DNS1 คือ IP ของ Broker ของท่านนะครับ

ตั้งค่า hostname

ตอนนี้เครื่องเรายังชื่อ localhost อยู่ สังเกตที่ prompt นะครับ เราต้องแก้ชื่อเครื่องสองที่ด้วยกันคือ nano -w /etc/sysconfig/network แก้จาก HOSTNAME=localhost.localdomain เป็น HOSTNAME=broker.example.com และสั่งด้วยคำสั่ง hostname broker.example.com แต่ prompt ยังไม่เปลี่ยนนะครับถ้าเข้ามาใหม่ก็จะเป็นชื่อใหม่ละ ตอนนี้ลองสั่ง hostname จะได้ชื่อที่เราตั้งไว้ ในทำนองเดียวกันกับเครื่อง node เราก็ต้องตั้งค่า hostname ให้ทุกเครื่องนะครับ เพิ่มบรรทัดนี้ลงใน /etc/hosts

cat<<EOF>>/etc/hosts
192.168.5.1 broker.example.com
127.0.0.1 broker.example.com
EOF

 ติดตั้ง MongoDB

* Broker Host

OpenShift Origin จะเก็บค่าต่างๆ ไว้ใน MongoDB ทั้งหมด ซึ่งการติดตั้งตรงนี้เป็นการใช้งานสำหรับ OpenShift Origin นะครับ

ติดตั้ง Server

yum -y install mongodb-server mongodb libmongodb

ตั้งค่า  MongoDB

nano -w /etc/mongodb.conf ให้ใส่ค่า smallfiles=true ตรงนี้เวลาสร้าง db ใหม่จะได้ไม่จองไว้เยอะ บันทึกเสร็จให้ start service service mongod start

สร้าง OpenShift broker user

mongo localhost/openshift_broker_dev --eval 'db.addUser("openshift", "openshift")'
mongo localhost/admin --eval 'db.addUser("openshift", "openshift")'

ข้างบนสามารถเปลี่ยน username และ password ตามใจเราได้นะครับใช้สำหรับจัดการ db

หลังจากนั้นให้ปิด service อีกครั้งเพราะตั้งค่าใหม่ service mongod stop แก้ไขอีกครั้ง nano -w /etc/mongodb.conf ให้เอา comment บรรทัดข้างล่างออก

auth=true

เมื่อกี้เรายังไม่ต้องการ auth หลังจากนี้เมื่อ start อีกครั้ง MongoDB จะให้ใส่ user และ password ก่อนถึงจะใช้ db ได้

ตั้งค่า firewall

แก้ไขอีกครั้ง nano -w /etc/mongodb.conf โดยการเพิ่ม IP ของเครื่องเราต่อได้บรรทัด ด้านล่างโดยใช้ comma คั่น

bind_ip=127.0.0.1

แก้เป็น

bind_ip=127.0.0.1,192.168.5.1

เปิด firewall lokkit –port=27017:tcp เปิด service ทุกครั้งตอน boot chkconfig mongod on start service อีกครั้ง service mongod start ทดสอบ user password ของ db โดยใช้คำสั่ง mongo admin แล้วพิมพ์บรรทัดด้านล่างลงไป ถ้าถูกต้องจะคืนค่า 1 กลับมาทดสอบเสร็จแล้วก็พิมพ์ exit ออกมา db.auth(‘openshift’,”openshift”)

ติดตั้ง ActiveMQ

* BROKER Host

ActiveMQ เป็น Messenger Service ที่ทำหน้าที่เป็นตัวกลางในการติดต่อสื่อสารระหว่าง broker กับ node เป็น Java  ติดตั้งด้วยคำสั่ง

ติดตั้ง

yum -y install activemq activemq-client เมื่อติดตั้งเสร็จให้ download config และตั้งค่าต่างดังนี้

cd /etc/activemq
mv activemq.xml activemq.orig
curl -o /etc/activemq/activemq.xml http://openshift.github.io/documentation/files/activemq.xml
curl -o /etc/activemq/jetty.xml http://openshift.github.io/documentation/files/jetty.xml
curl -o /etc/activemq/jetty-realm.properties http://openshift.github.io/documentation/files/jetty-realm.properties

แก้ activemq.xml

nano -w /etc/activemq/activemq.xml แก้ไขชื่อ host เป็น broker.example.com จะได้เป็น

<broker xmlns="http://activemq.apache.org/schema/core" brokerName="broker.example.com" dataDirectory="${activemq.data}">

และตั้งค่า user password ใน file activemq.xml ตาม block ด้านล่าง

<simpleAuthenticationPlugin>
<users>
<authenticationUser username="mcollective" password="secret" groups="mcollective,everyone"/>
<authenticationUser username="system" password="manager" groups="mcollective,admin,everyone"/>
</users>
</simpleAuthenticationPlugin>

ตัวอย่างที่ผมตั้งคือ

  • user ทั่วไปเป็น mcollective  และ pass: secret user นี้เอาไว้ติดต่อสื่อสารกันระหว่าง Client กับ Server ซึ่งตั้งให้ตรงกัน
  • admin เป็น system  และ pass: manager user เป็นค่า default ของ ActiveMQ แนะนำให้ใช้แบบนี้ เมื่อเข้าใจมันแล้วค่อยเปลี่ยนครับ

แก้ไข admin password ใน /etc/activemq/jetty-realm.properties nano -w /etc/activemq/jetty-realm.properties แล้วตั้งค่าไว้สำหรับ login หน้า ActiveMQ Console

admin: secret , admin

เปิด firewall

lokkit --port=61613:tcp
lokkit --port=8161:tcp

เปิด service

chkconfig activemq on

service activemq start

ทดสอบ ActiveMQ

โดยเรียก http://localhost:8161 ถ้าลง lynx ไว้ก็เรียกได้เลย lynx http://localhost:8161 ถ้าใครไม่ถนัดก็สามารถมาเรียกทางฝั่ง Host OS ก็ได้โดยทำ SSH Tunnel พิมพ์คำสั่งบน terminal ใช้ได้ทั้ง linux และ OS X ssh -f -N -L 8161:localhost:8161 root@192.168.5.1 login ได้แล้วก็สามารถเปิดบน web browser ได้เลย ซึ่งใช้ user และ password ที่ตั้งไว้ใน /etc/activemq/jetty-realm.properties หมายเหตุ: ถ้าบังเอิญใครไล่ดู log แล้วไปเจอ libwrapper.so และรู้สึกขัดหูขัดตาก็ให้ copy ตามนี้ cp /usr/lib/activemq/linux/libwrapper.so /usr/share/activemq/bin/linux-x86-64/

ติดตั้ง MCollective client

* BROKER Host

MCollective ใช้สำหรับสื่อสารระหว่าง Broker กับ Gear Node โดย Client จะอยู่ทางฝั่ง Broker และ Server จะอยู่บน Gear Node แรกๆ ก็จะงงว่ามันต่างกับ  ActiveMQ ยังไง คร่าวๆ คือ ActiveMQ เป็น Messenger Server ส่วน MCollecive จะเป็น Client คอยรับ Messege จาก ActiveMQ เช่นถ้าสั่งสร้าง Gear ขึ้นมา MCollective จะได้รับ Message “create gear” จาก  ActiveMQ แล้วดำเนินการสร้าง Gear ขึ้นมาทางฝั่ง Gear Node

ติดตั้ง

yum -y install mcollective-client และตั้งค่าใน /etc/mcollective/client.cfg

cat <<EOF > /etc/mcollective/client.cfg
topicprefix = /topic/
main_collective = mcollective
collectives = mcollective
libdir =/opt/rh/ruby193/root/usr/libexec/mcollective
logfile = /var/log/mcollective-client.log
loglevel = debug

# Plugins
securityprovider = psk
plugin.psk = unset

connector = stomp
plugin.stomp.pool.size = 1
plugin.stomp.pool.1.host = broker.example.com
plugin.stomp.pool.1.port = 61613
plugin.stomp.pool.1.user = mcollective
plugin.stomp.pool.1.password = secret
EOF

หลังจากนั้นก็ให้ตั้งค่า user และ password ให้ตรงกับที่ตั้งไว้ หลังจาก ติดตั้ง MCollective Server ทางฝั่ง Node Host ค่อยทดสอบกันว่าใช้ได้หรือไม่

ติดตั้ง Broker

* BROKER Host ขั้นตอนนี้เป็นติดตั้งตัว OpenShift Origin Platform web broker/console  ติดตั้งโดยใช้คำสั่ง

ติดตั้ง

yum  -y install  openshift-origin-broker openshift-origin-broker-util \
rubygem-openshift-origin-auth-remote-user \
rubygem-openshift-origin-auth-mongo \
rubygem-openshift-origin-msg-broker-mcollective \
rubygem-openshift-origin-dns-nsupdate \
rubygem-openshift-origin-dns-route53 \
ruby193-rubygem-passenger ruby193-mod_passenger

เปิด firewall ให้กับ services

เพิ่มความชัวร์ว่า service สองตัวต้องเปิดแน่ๆ ซึ่งปกติมันก็เปิดอยู่แล้ว

chkconfig network on
chkconfig sshd on
lokkit --service=ssh
lokkit --service=https
lokkit --service=http

 

สร้างคีย์

gen access key ให้กับตัว OpenShift Server

openssl genrsa -out /etc/openshift/server_priv.pem 2048
openssl rsa -in /etc/openshift/server_priv.pem -pubout > /etc/openshift/server_pub.pem

gen ssh keypair ไว้สำหรับเครื่อง Broker ติดต่อกับ Node เช่นรับส่งข้อมูลในขั้นตอนการสร้าง Gear โดยไม่ต้องใช้รหัสผ่านนั่นเอง วิธีสร้างทำดังนี้

ssh-keygen -t rsa -b 2048 -f ~/.ssh/rsync_id_rsa

ระหว่างดำเนินการจะมีการถาม passphrase สองครั้งให้กด enter ผ่านไปนะครับเพราะถ้าเราตั้ง passphrase มันจะถาม passphrase ทุกครั้งที่ใช้งาน

copy key ที่สร้างไปเก็บไว้ใน openshift cp ~/.ssh/rsync_id_rsa* /etc/openshift/

ตั้งสิทธิ SELinux

setsebool -P  httpd_unified=on \
              httpd_can_network_connect=on \
              httpd_can_network_relay=on \
              httpd_run_stickshift=on \
              named_write_master_zones=on \
              allow_ypbind=on \
              httpd_verify_dns=on \
              httpd_enable_homedirs=on \
              httpd_execmem=on \
              httpd_read_user_content=on

ถ้าอยากรู้ว่าแต่ละค่าหมายความว่าอย่างไรสามารถอ่านจากคู่มือต้นฉบับที่ผมอ้างอิงได้

(
echo fcontext -a -t httpd_var_run_t '/var/www/openshift/broker/httpd/run(/.*)?'
echo fcontext -a -t httpd_tmp_t '/var/www/openshift/broker/tmp(/.*)?'
echo fcontext -a -t httpd_log_t '/var/log/openshift/broker(/.*)?'
) | semanage -i -

chcon -R -t httpd_log_t /var/log/openshift/broker
chcon -R -t httpd_tmp_t /var/www/openshift/broker/httpd/run
chcon -R -t httpd_var_run_t /var/www/openshift/broker/httpd/run

fixfiles -R ruby193-rubygem-passenger restore
fixfiles -R ruby193-mod_passenger restore
fixfiles -R rubygem-passenger restore
fixfiles -R mod_passenger restore

restorecon -rv /var/run
restorecon -rv /opt
restorecon -rv /var/www/openshift/broker/tmp
restorecon -v '/var/log/openshift/broker/user_action.log'

คำสั่งชุดนี้ก็ยังคงเกี่ยวกับ SELinux เช่นกันครับ

ตั้งค่า Config ของ Broker

nano -w /etc/openshift/broker.conf 

Gear Sizes

ค่านี้เป็นการกำหนดว่าจะใช้ Gear Sizes ใดบ้างซึ่งจะมี small medium large แต่ผมลองแล้วมันเห็นแค่ small ต้องหาสาเหตุก่อน

# Comma separated list of valid gear sizes
VALID_GEAR_SIZES="small,medium,large"

 Cloud Domain

กำหนดชื่อ Domain ของระบบตรงนี้ใช้ example.com

# Domain suffix to use for applications (Must match node config)
CLOUD_DOMAIN="example.com"

 MongoDB settings

กำหนดค่าชี้ไปยัง MongoDB ที่เราติดตั้งไว้ ถ้าใช้ในเครื่องเดียวกันก็ใส่ localhost ก็ได้ user และ password ตั้งให้ตรงกับที่ใส่ใน db ตอนสร้าง db name

# Comma seperated list of replica set servers. Eg: "<host-1>:<port-1>,<host-2>:<port-2>,..."
MONGO_HOST_PORT="localhost:27017"

#Mongo DB user configured earlier
MONGO_USER="openshift"

#Password for user configured earlier
MONGO_PASSWORD="openshift"

#Broker metadata database
MONGO_DB="openshift_broker_dev"

Authentication Salt

gen ค่า random สำหรับค่า AUTH_SALT ด้วยคำสั่ง openssl rand -base64 64

AUTH_SALT="Gn2qHLUtPixo/R5A3uFLuAAXi54wyvWnWnmpQT6Jk1apnPVmCmN4LyDY1IPfVf7nU2SpLSpCdyh6ZWEP/2ZlEg=="

Session Secret

gen ค่า random  สำหรับค่า SESSION_SECRET ด้วยคำสั่ง openssl rand -base64 64

SESSION_SECRET="TQZQzccUWvVvU8w2Dc3ZAU+0hm2MJCrvcNKUol4nYu+FwDH/Wi4g4JXLttPiA7tKup7poLJNH6RglwRyyhc0TQ=="

ถ้าใครวางแผนทำ broker หลายตัวให้ใช้ค่า SESSION_SECRET เหมือนกันนะครับ

Broker Plugins

เมื่อติดตั้ง OpenShift Origin Broker แล้ว Plugins ต่างๆ ยังไม่เปิดใช้เราต้องเข้าไปจัดการอีกนิดหน่อย โดยการ copy จาก config ตัวอย่างแล้วแก้ไขให้ตรงกับระบบของเรา

cd /etc/openshift/plugins.d หลักเราจะใช้ config ต่อไปนี้

openshift-origin-auth-remote-user.conf.example

openshift-origin-dns-nsupdate.conf.example

openshift-origin-msg-broker-mcollective.conf.example

ให้ทำการ copy file ทั้งสามเป็นชื่อใหม่โดยการตัด .example ออก

cp openshift-origin-auth-remote-user.conf.example openshift-origin-auth-remote-user.conf
cp openshift-origin-msg-broker-mcollective.conf.example openshift-origin-msg-broker-mcollective.conf

ให้แก้ไข /opt/rh/ruby193/root/etc/mcollective/client.cfg โดยใส่ชื่อ host เป็น broker.example.com nano -w /opt/rh/ruby193/root/etc/mcollective/client.cfg

topicprefix = /topic/
main_collective = mcollective
collectives = mcollective
libdir = /opt/rh/ruby193/root/usr/libexec/mcollective/
logger_type = console
loglevel = warn

# Plugins
securityprovider = psk
plugin.psk = unset

connector = stomp
plugin.stomp.host = broker.example.com
plugin.stomp.port = 61613
plugin.stomp.user = mcollective
plugin.stomp.password = secret

# Facts
factsource = yaml
plugin.yaml = /etc/mcollective/facts.yaml
sed -i 's/MCOLLECTIVE_CONFIG.*/MCOLLECTIVE_CONFIG=\/opt\/rh\/ruby193\/root\/etc\/mcollective\/client.cfg/g' /etc/openshift/plugins.d/openshift-origin-msg-broker-mcollective.conf

 

ตั้งค่า DNS plugin

ส่วน DNS plugin เราสร้างเองจากค่าในระบบที่ตั้งไว้ดังนี้

domain=example.com
keyfile=/var/named/${domain}.key
cd /var/named
KEY="$(grep Key: K${domain}*.private | cut -d ' ' -f 2)"
cd /etc/openshift/plugins.d
cat << EOF > openshift-origin-dns-nsupdate.conf
BIND_SERVER="127.0.0.1"
BIND_PORT=53
BIND_KEYNAME="${domain}"
BIND_KEYVALUE="${KEY}"
BIND_ZONE="${domain}"
EOF

ลองตรวจสอบค่าโดย cat /etc/openshift/plugins.d/openshift-origin-dns-nsupdate.conf ค่าที่ได้หน้าตาประมาณนี้ โดยค่า KEY จะต้องตรงกับระบบ ใน file /var/named/example.com.key

BIND_SERVER="127.0.0.1"
BIND_PORT=53
BIND_KEYNAME="example.com"
BIND_KEYVALUE="ACzOZs/EDNNmNRmojRa25F2QErrVZMLZ+V+Tx765kzEvr1/1a3wtBHBaHJLRyOZ5d3ZGogHLgm2t2B6BnYF8dw=="
BIND_ZONE="example.com"

ตั้งค่า Authentication Plugin

OpenShift สามารถติดต่อขอ Authen ได้หลายแบบ เช่น LDAP Kerberos Momgo Auth และ Basic Auth สำหรับระบบของเราใช้แบบ Basic Auth ก็พอครับ คือผ่านทาง htpasswd

copy config จาก file ตัวอย่าง

cp /var/www/openshift/broker/httpd/conf.d/openshift-origin-auth-remote-user-basic.conf.sample /var/www/openshift/broker/httpd/conf.d/openshift-origin-auth-remote-user.conf

สร้าง user และ password

htpasswd -c /etc/openshift/htpasswd openshift เมื่อสั่งคำสั่งด้านบนจะมีการให้ตั้ง password ใส่ให้ถูกต้องสองครั้งและจำให้ได้ไว้สำหรับ login เข้าหน้าจัดการ Broker

ติดตั้ง Administrative Console

เราสามารถติดตั้ง Administrative Console ไว้สำหรับ monitor ระบบผ่านทางเว็บ ให้ติดตั้งดังนี้

yum -y install rubygem-openshift-origin-admin-console

ตั้งค่า proxy ใน OpenShift server

nano -w /etc/httpd/conf.d/000002_openshift_origin_broker_proxy.conf และให้เพิ่มค่านี้ในส่วนของ <VirtualHost *:443>

ProxyPass /admin-console http://127.0.0.1:8080/admin-console
ProxyPass /assets http://127.0.0.1:8080/assets

เปิด Service

chkconfig openshift-broker on

service openshift-broker start

ทดสอบ REST API

สั่งคำสั่งต่อไปนี้ว่าได้ผลลับธ์ปกติ หรือว่ามี error อะไรหรือไม่ curl -u openshift:openshift http://localhost:8080/broker/rest/api.json

เปิดใช้งาน Apache web Server

chkconfig httpd on
service httpd start

ทดสอบเรียก REST API อีกครั้งคราวนี้ผ่านชื่อ domain curl -u openshift:openshift -k https://broker.example.com/broker/rest/api.json

ติดตั้ง Web Console

* BROKER Host

ติดตั้ง

yum -y install openshift-origin-console

ตั้งค่า

กำหนดให้ Web Console ยืนยันสิทธิแบบเดียวกับ Broker คือ Basic Auth

cd /var/www/openshift/console/httpd/conf.d
cp openshift-origin-auth-remote-user-basic.conf.sample openshift-origin-auth-remote-user-basic.conf

Verify Ruby Bundler

cd /var/www/openshift/console
bundle --local

rake assets:precompile
chown -R apache:apache Gemfile.lock tmp

ดูผลถ้าทำสำเร็จจะขึ้นข้อความ Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

เพิ่ม SESSION_SECRET ใน /etc/openshift/console.conf

ใช้คำสั่งนี้สร้าง key หรือ จะใช่อย่างอื่นสร้างก็ได้ openssl rand -base64 64

SESSION_SECRET="TQZQzccUWvVvU8w2Dc3ZAU+0hm2MJCrvcNKUol4nYu+FwDH/Wi4g4JXLttPiA7tKup7poLJNH6RglwRyyhc0TQ=="

SELinux

setsebool -P  httpd_unified=on \
              httpd_can_network_connect=on \
              httpd_can_network_relay=on \
              httpd_run_stickshift=on \
              named_write_master_zones=on \
              allow_ypbind=on \
              httpd_verify_dns=on \
              httpd_enable_homedirs=on \
              httpd_execmem=on \
              httpd_read_user_content=on
 setsebool -P  httpd_unified=on \
              httpd_can_network_connect=on \
              httpd_can_network_relay=on \
              httpd_run_stickshift=on \
              named_write_master_zones=on \
              allow_ypbind=on \
              httpd_verify_dns=on \
              httpd_enable_homedirs=on \
              httpd_execmem=on \
              httpd_read_user_content=on

 

(
echo fcontext -a -t httpd_log_t '/var/log/openshift/console(/.*)?'
echo fcontext -a -t httpd_log_t '/var/log/openshift/console/httpd(/.*)?'
echo fcontext -a -t httpd_var_run_t '/var/www/openshift/console/httpd/run(/.*)?'
) | semanage -i -

fixfiles -R ruby193-rubygem-passenger restore
fixfiles -R ruby193-mod_passenger restore
fixfiles -R rubygem-passenger restore
fixfiles -R mod_passenger restore

restorecon -rv /var/run
restorecon -rv /opt
restorecon -R /var/log/openshift/console
restorecon -R /var/www/openshift/console

 

เปิดใข้งาน Service

chkconfig openshift-console on
service openshift-console start

ถ้าไม่มีอะไรผิดพลาดตอนนี้ท่านทำฝั่ง Broker Host เสร็จเรียบร้อยแล้ว ท่านสามารถเข้าใช้งานเว็บได้ดังนี้ https://broker.example.com/ ใช้ user ที่สร้างไว้ ในที่นี้ของผมคือ openshift openshift

OpenShift Origin Console

OpenShift Origin Console

รูปที่ 25 OpenShift Origin Console

และเข้า admin-console ผ่านทาง https://broker.example.com/admin-console

OpenShift Origin Admin Console

OpenShift Origin Admin Console

รูปที่ 26 OpenShift Origin Admin Console

ถ้ามั่นใจว่าตั้งค่าเสร็จเรียบร้อยก็แนะนำให้ Snapshot เก็บไว้ด้วยนะครับ ถ้าพลาดจะได้กลับมาได้ และลอง reboot ระบบเพื่อดูว่า services ต่างๆ start  และ ทำงานถูกต้องครบถ้วนหรือเปล่า

ต่อไปจะเป็นการ Setup Node Host

Pages: 1 2 3 4 5 6 7