OpenShift Origin 4.0 on CentOS 6.5
by MrChoke
ตั้งค่าเครื่อง 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
รูปที่ 25 OpenShift Origin Console
และเข้า admin-console ผ่านทาง https://broker.example.com/admin-console
รูปที่ 26 OpenShift Origin Admin Console
ถ้ามั่นใจว่าตั้งค่าเสร็จเรียบร้อยก็แนะนำให้ Snapshot เก็บไว้ด้วยนะครับ ถ้าพลาดจะได้กลับมาได้ และลอง reboot ระบบเพื่อดูว่า services ต่างๆ start และ ทำงานถูกต้องครบถ้วนหรือเปล่า
ต่อไปจะเป็นการ Setup Node Host