Membangun PaaS Openshift Origin di Lokal Server

Openshift merupakan cloud computing PaaS (Plaftform as a Service) dari Red Hat yang dikembangkan menggunakan bahasa pemrograman Ruby. Layanan PaaS ini dimana kita tidak perlu lagi memikirkan namanya insfrastruktur seperti apa, karena sudah sediakan oleh provider Red Hat. Sebagai developer kita tinggal coding aplikasi di cloud. Saya kira untuk PHP cocok selain Java, Python, Perl, Node.js dan Ruby. Kita akan mendeploy aplikasi di OpenShift dengan menggunakan Git, Jadi kita akan berliku-liku dengan Git.


Selain itu jika kita ingin bekerja dengan framework maka OpenShift support dengan berbagai jenis web application framework (Tetapi saat ini masih dalam status percobaan) seperti cakePHP, django, codeigniter dan lain-lain bisa dilihat disini.
OpenShift juga menawarkan open source platform untuk mengembangkan dikomputer lokal maupun untuk data center kita nantinya, Maka kita gunakan OpenShift Origin. bisa didownload disini. Nah implementasi dari OpenShift Origin ini diimplementasikan di RedHat dengan space host yang terbatas, dengan nama FreeShift(Baca Gratis) sedangkan jika kita butuh storage besar kita bisa gunakan yang MegaShift (versi Berbayar).

Untuk Instalasi Openshift Origin di sarankan menggunakan Sistem Operasi CentOS 6.3.




A. Installasi dan Konfigurasi Broker

a. Pengaturan Sinkronisasi

Langkah awal adalah menginstall dan mengkonfigurasi broker , dibutuhkan NTP (Network Time Protocol) untuk men-sinkronisasi-kan sistem dan jam hardware.
# yum install ntpdate ntp
Kemudian konfigurasi agar tersinkronisasi dengan server .
# ntpdate clock.redhat.com

b. Remote Server (SSH)

Kemudian install SSH agar dapat berinteraksi dengan host lain dan remote .
# mkdir ~/.ssh
Konfigurasi permission pada direktori ssh.
# chmod 700 ~/.ssh
Kemudian generate keypair
# ssh-keygen

c. Konfigurasi Repository

Setelah itu mengkonfigrasi repository Centos di /etc/yum.repos.d/.
# vi /etc/yum.repos.d/OpenShift-broker.repo
Tambahkan baris berikut :
[OpenShift_infrastructure]
name=OpenShift Infrastructure
baseurl=https://mirror.OpenShift.com/pub/origin-server/nightly/enterprise/2012-11-15//Infrastructure/x86_64/os/
enabled=1
gpgcheck=0
update repositori dengan perintah
# yum update

d. Domain (DNS)

Kemudian konfigurasi domain/DNS , installsi paket DNS terlebih dahulu
#yum install bind bind-utils
Setelah instalasi selesai, langkah selanjutnya adalah membuat domain, untuk memudahkan dalam pengerjaan, set nama domain user menjadi $domain.
#domain=meruvianyama.com
ubah “meruvianyama.com” dengan nama domain yang ingin digunakan. Selanjutnya atur $keyfile untuk domain yang digunakan.
keyfile=/var/named/${domain}.key
Gunakan dnssec-keygen untuk menggenerate DNSSEC baru untuk domain. Lanjutkan dengan perintah di bawah ini.
#rm -vf /var/named/K${domain}*
#pushd /var/named
#dnssec-keygen -a HMAC-MD5 -b 512 -n USER -r /dev/urandom ${domain}
#KEY="$(grep Key: K${domain}*.private | cut -d ' ' -f 2)"
#popd
pastikan user memiliki key untuk menyambungkan broker dengan BIND, gunakan perintah rndc-confgen
#rndc-confgen -a -r /dev/urandom
pastikan juga bahwa kepemilikan, perizinan dan kontek SELINUX telah diatur dalam key yang baru
#restorecon -v /etc/rndc.* /etc/named.*
#chown -v root:named /etc/rndc.key
#chmod -v 640 /etc/rndc.key
Buat sebuah file baru dengan nama forwarders.conf dengan menambahkan baris berikut.
#nano /var/named/forwarders.conf
berisi :
forwarders { 8.8.8.8; 8.8.4.4; };
Pastikan sekali lagi perizinan dengan perintah di bawah ini.
#restorecon -v /var/named/forwarders.conf
#chmod -v 755 /var/named/forwarders.conf
Dalam konfigurasi BIND, dibutuhkan sebuah database untuk domain, gunakan perintah berikut untuk membuat direktori untuk menampung database:
#rm -rvh /var/named/dynamic
#mkdir -vp /var/named/dynamic
gunakan perintah di bawah ini untuk membuat database untuk domain.
# cat <<EOF > /var/named/dynamic/${domain}.db
selanjutnya, install DNSSEC key untuk domain yang telah dibuat. Buat file /var/named/${domain}.key dengan perintah :
# cat <<EOF > /var/named/${domain}.key
Pastikan untuk mengatur perizinan dan kontek Selinux:
#chown -Rv named:named /var/named
#restorecon -rv /var/named
Buat juga file named.conf di direktori /etc/
# vi <<EOF > /etc/named.conf
Berisi :
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
Atur juga permission untuk named.conf :
#chown -v root:named /etc/named.conf
#restorecon /etc/named.conf
Setelah itu konfigurasi host pada /etc/resolv.conf :
# vi /etc/resolv.conf
Berisi
nameserver 192.168.2.43
Kemudian buka firewall rule dan restart service named
#lokkit –service=dns
#chkconfig named on
#service named restart
Hubungkan BIND dengan broker menggunakan perintah nsupdate.
# nsupdate -k ${keyfile}
Pastikan BIND telah terkonfigurasi dengan benar dengan menggunakan perintah di bawah ini untuk resolve broker hostname.
#dig -AT-127.0.0.1 OpenShift.meruvianyama-DOT-com
Pastikan juga BIND melanjutkan permintaan ke hostname lainnya.
#dig @127.0.0.1 icann.org.a
Pastikan broker menggunakan BIND lokal instance yang berjalan dengan menggunakan perintah di bawah ini.
#dig OpenShift.meruvianyama.com

e. Konfigurasi DHCP dan Hostname

Kemudian konfigurasi DHCP dan Hostname di /etc/dhcp/dhclient-eth0.conf.
# vi /etc/dhcp/dhclient-eth0.conf
Ubah baris berikut :
prepend domain-name-servers 192.168.2.43;
supersede host-name "OpenShift";
supersede domain-name "meruvianyama.com";
Setelah itu atur hostname pada /etc/sysconfig/network dengan mengubah HOSTNAME dengan nama hostname yang telah dibuat dan gunakan juga perintah hostname untuk mengaplikasikan ke server.
HOSTNAME=OpenShift.meruvianyama.com
# hostname OpenShift.meruvianyama.com

f. Konfigurasi Database (MongoDB)

Untuk menyimpan beberapa pengaturan yang digunakan oleh OpenShift, termasuk authentication, database dan membuat administraive user diperlukan database No SQL yaitu MongoDB.
Install MongoDB di Centos :
# yum install mongodb-server
Kemudian konfigurasi MongoDB di /etc/mongodb.conf .
# vi /etc/mongodb.conf
berisi :
auth = true
smallfiles = true
Kemudian dilanjutkan dengan membuka Firewall dan restart MongoDB.
# chkconfig mongod on && service mongod restart

g. Konfigurasi ActiveMQ

ActiveMQ berperan sebagai media penyambung komunikasi antara broker dengan node. Install ActiveMQ di Centos.
#yum install activemq
Konfigurasi ActiveMQ untuk penerapan sistem :
# vi /etc/activemq/activemq.xml
Berisi :
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
<!-- Allows us to use system properties as variables in this configuration file -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>file:\${activemq.conf}/credentials.properties</value>
</property>
</bean>
<!--
The <broker> element is used to configure the ActiveMQ broker.
-->
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="OpenShift.meruvianyama.com" dataDirectory="\${activemq.data}">
<!--
For better performances use VM cursor and small memory limit.
For more information, see:
http://activemq.apache.org/message-cursors.html
Also, if your producer is "hanging", it's probably due to producer flow control.
For more information, see:
http://activemq.apache.org/producer-flow-control.html
-->
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">" producerFlowControl="true" memoryLimit="1mb">
<pendingSubscriberPolicy>
<vmCursor />
</pendingSubscriberPolicy>
</policyEntry>
<policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb">
<!-- Use VM cursor for better latency
For more information, see:
http://activemq.apache.org/message-cursors.html
<pendingQueuePolicy>
<vmQueueCursor/>
</pendingQueuePolicy>
-->
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
<!--
The managementContext is used to configure how ActiveMQ is exposed in
JMX. By default, ActiveMQ uses the MBean server that is started by
the JVM. For more information, see:
http://activemq.apache.org/jmx.html
-->
<managementContext>
<managementContext createConnector="false"/>
</managementContext>
<!--
Configure message persistence for the broker. The default persistence mechanism is the KahaDB store (identified by the kahaDB tag).
For more information, see:
http://activemq.apache.org/persistence.html
-->
<persistenceAdapter>
<kahaDB directory="\${activemq.data}/kahadb"/>
</persistenceAdapter>
<!-- add users for MCollective -->
<plugins>
<statisticsBrokerPlugin/>
<simpleAuthenticationPlugin>
<users>
<authenticationUser username="MCollective" password="meruvian"
groups="MCollective,everyone"/>
<authenticationUser username="admin" password="meruvian"
groups="MCollective,admin,everyone"/>
</users>
</simpleAuthenticationPlugin>
<authorizationPlugin>
<map>
<authorizationMap>
<authorizationEntries>
<authorizationEntry queue=">" write="admins" read="admins" admin="admins" />
<authorizationEntry topic=">" write="admins" read="admins" admin="admins" />
<authorizationEntry topic="MCollective.>" write="MCollective" read="MCollective" admin="MCollective" />
<authorizationEntry queue="MCollective.>" write="MCollective" read="MCollective" admin="MCollective" />
<authorizationEntry topic="ActiveMQ.Advisory.>" read="everyone" write="everyone" admin="everyone"/>
</authorizationEntries>
</authorizationMap>
</map>
</authorizationPlugin>
</plugins>
<!--
The systemUsage controls the maximum amount of space the broker will use before slowing down producers. For more information, see:
http://activemq.apache.org/producer-flow-control.html
If using ActiveMQ embedded - the following limits could safely be used:
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage limit="20 mb"/>
</memoryUsage>
<storeUsage>
<storeUsage limit="1 gb"/>
</storeUsage>
<tempUsage>
<tempUsage limit="100 mb"/>
</tempUsage>
</systemUsage>
</systemUsage>
-->
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage limit="64 mb"/>
</memoryUsage>
<storeUsage>
<storeUsage limit="100 gb"/>
</storeUsage>
<tempUsage>
<tempUsage limit="50 gb"/>
</tempUsage>
</systemUsage>
</systemUsage>
<!--
The transport connectors expose ActiveMQ over a given protocol to clients and other brokers. For more information, see:
http://activemq.apache.org/configuring-transports.html
-->
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/>
<transportConnector name="stomp" uri="stomp://0.0.0.0:61613"/>
</transportConnectors>
</broker>
<!--
Enable web consoles, REST and Ajax APIs and demos Take a look at \${ACTIVEMQ_HOME}/conf/jetty.xml for more details
-->
<import resource="jetty.xml"/>
</beans>
<!-- END SNIPPET: example -->
EOF

Kemudian buka firewall rule dan restart ActiveMQ .

#lokkit –port=61613:tcp && chkconfig activemq on && service activemq restart
Dalam konfigurasi ActiveMQ terdapat juga konfigurasi jetty yang harus diubah , dengan perintah :
# sed -i -e '/name="authenticate"/s/false/true/' /etc/activemq/jetty.xml
# sed -i -e '/name="port"/a<property name="host" value="127.0.0.1" />' /etc/activemq/jetty.xml
ubah juga konfigurasi jetty-realm.properties pada direktori yang sama.
# sed -i -e '/admin:/s/admin,/meruvian,/' /etc/activemq/jetty-realm.properties
Pastikan ActiveMQ telah berjalan dengan baik dengan menggunakan perintah di bawah ini.
# curl --head --user admin:meruvian http://localhost:8161/admin/xml/topics.jsp
Selanjutnya, cek servis untuk menampilkan list topic
#curl --user admin:meruvian --silent http://localhost:8161/admin/xml/topics.jsp | grep -A 4 topic 

h. Konfigurasi MCollective

Mcollective untuk mengomunikasikan dengan host node. Untuk instalasinya dapat menggunakan perintah di bawah ini.
#yum install MCollective-client
Untuk konfigurasi MCollective, hapus konten dari /etc/MCollective/client.cfg dan replace dengan menggunakan langkah di bawah ini.
# vi /etc/MCollective/client.cfg
berisi :
topicprefix = /topic/
main_collective = MCollective
collectives = MCollective
libdir = /usr/libexec/MCollective
logfile = /var/log/MCollective-client.log
loglevel = debug
# Plugins
securityprovider = psk
plugin.psk = unset
connector = stomp
plugin.stomp.host = OpenShift.meruvianyama.com
plugin.stomp.port = 61613
plugin.stomp.user = MCollective
plugin.stomp.password = meruvian
Ubah permission dengan menggunakan perintah di bawah ini.
#chown root:apache /var/log/MCollective-client.log

i. Konfigurasi Broker

Tahap ini bertujuan untuk menyediakan REST API ke tool client dari Rails Broker.Install paket-paket yang dibutuhkan :
#yum install openshift-origin-broker openshift-origin-broker-util rubygem-openshift-origin-auth-remote-user rubygem-openshift-origin-msg-broker-mcollective rubygem-openshift-origin-dns-bind
Kemudian konfigurasi broker proxy servername.Default value dari Servername adalah localhost dan dapat digantikan dengan nama hostname broker yang telah dibuat dalam tahap sebelumnya.
# sed -i -e "s/ServerName .*$/ServerName 'OpenShift.meruvianyama.com'/"/etc/httpd/conf.d/000000_OpenShift_origin_broker_proxy.conf
Ubah firewall dan konfigurasi semua yang dibutuhkan service system agar auto-start secara otomatis ketika reboot. Gunakan perintah di bawah ini.
# chkconfig httpd on && chkconfig network on && chkconfig ntpd on && chkconfig sshd on
# lokkit –service=ssh && lokkit –service=https && lokkit –service=http
Kemudian konfigurasi Selinux dengan perintah setbool di bawah ini:
# 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
Selanjutnya, gunakan fixfiles dan restorecon untuk relabel sejumlah file dan direktori dengan konteks SELinux yang benar.
# fixfiles -R rubygem-passenger restore && fixfiles -R mod_passenger restore && restorecon -rv /var/run && restorecon -rv /usr/share/rubygems/gems/passenger-*
Pastikan juga konfigurasi domain untuk OpenShift broker telah termodifikasi untuk merefleksikan pilihan user dari nama domain. Edit /etc/OpenShift/broker.conf dan modifikasi pengaturan CLOUD_DOMAIN:
# sed -i -e "s/^CLOUD_DOMAIN=.*$/CLOUD_DOMAIN=${domain}/"/etc/OpenShift/broker.conf
Konfigurasi OpenShift agar memungkinkan plug-in yang dibutuhkan dari autentikasi, DNS dan message. Plugin dapat dikonfigurasi dalam direktori /etc/OpenShift/plugins.d, lakukan langkah-langkah di bawah ini untuk mulai konfigurasi.
#cd /etc/OpenShift/plugins.d
Aktifkan remote-user auth plug-in dan MCollective messaging plug-in dengan mengopi file konfigurasi 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
Konfigurasi dns-bind dengan mengikuti perintah di bawah ini.
# cat <<EOF > OpenShift-origin-dns-bind.conf
dns-bind plug-in membutuhkan tambahan SELinux policy yang dikompilasi dan di install dengan menggunakan perintah make dan semodule.
# pushd /usr/share/selinux/packages/rubygem-OpenShift-origin-dns-bind/ && make -f /usr/share/selinux/devel/Makefile ; popd
# semodule -i /usr/share/selinux/packages/rubygem-OpenShift-origin-dns-bind/dhcpnamedforward.pp
Selanjutnya untuk konfigurasi Authenticate, kopi konfigurasi httpd example ke dalam direktori :
# 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
konfigurasi di atas mengonfigurasi file httpd untuk menggunakan /etc/OpenShift/htpasswd dari file password. Gunakan perintah di bawah ini untuk membuat file dengan single authorized user, “meruvian”.
# htpasswd -c /etc/OpenShift/htpasswd meruvian
Langkah selanjutnya adalah menggenerate broker access key untuk digunakan Jenkins dan beberapa layanan lainnya.
# openssl genrsa -out /etc/OpenShift/server_priv.pem 2048
# openssl rsa -in /etc/OpenShift/server_priv.pem -pubout > /etc/OpenShift/server_pub.pem
Kemudian generate sshkey
# ssh-keygen -t rsa -b 2048 -f ~/.ssh/rsync_id_rsa
# cp ~/.ssh/rsync_id_rsa* /etc/OpenShift/
Setelah semua konfigurasi di atas selesai, selanjutnya membuat akun user di Mongo, gunakan perintah berikut pada shell MongoDB.
# mongo OpenShift_broker_dev --eval 'db.addUser("OpenShift", "meruvian")'
Pastikan Akun “OpenShift” dan “admin” telah dibuat dengan menggunakan perintah di bawah ini.
# echo 'db.system.users.find()' | mongo OpenShift_broker_dev
Langkah terakhir adalah mengkonfigurasi bundler, masuk ke dalam direktori /var/www/OpenShift/broker, kemudian lakukan perintah di bawah ini.
#bundle –local
User juga membutuhkan broker untuk berjalan secara otomatis setelah reboot dengan menggunakan perintah di bawah ini.
#chkconfig openshift-broker on
Kemudian jalankan Broker :
# service httpd start && service openshift-broker start
Pastikan aplikasi berjalan dengan menggunakan perintah curl.
# curl -Ik https://localhost/broker/rest/api
Cek, apakah user mendapatkan 200 untuk response OK. Jika tidak coba dengan perintah di bawah ini.
# curl -k https://localhost/broker/rest/api

B. Instalasi Node

a. Repositori

Instalasi paket node dibutuhkan paket dari repositori, tambahkan repositori node dengan menggunakan perintah di bawah ini.
# nano /etc/yum.repos.d/OpenShift-node.repo
tambahkan baris di bawah ini.
[OpenShift_node]
name=OpenShift Node
baseurl=https://mirror.openshift.com/pub/origin-server/nightly/enterprise/2012-11-15/Node/x86_64/os/
enabled=1
gpgcheck=0
Versi terbaru OpenShift terdapat tambahan paket aplikasi yaitu OpenShift JbossEAP, fungsi dari aplikasi ini sama dengan Apache Tomcat yaitu sebagai container. Tambahkan repository Jboss :
#nano /etc/yum.repos.d/OpenShift-jboss.repo
tambahkan baris berikut ke dalam repositori OpenShift-jboss.repo
[OpenShift_jbosseap]
name=OpenShift JBossEAP
baseurl=https://mirror.OpenShift.com/pub/origin-server/nightly/enterprise/2012-11-15/JBoss_EAP6_Cartridge/x86_64/os/
enabled=1
gpgcheck=0
Karena ada beberapa paket yang tidak ada pada repositori di atas, tambahkan repositori untuk rhel6 dengan mengikuti langkah-langkah di bawah ini.
#nano /etc/yum.repos.d/OpenShift-rhel6.repo
tambahkan baris berikut pada repo tersebut.
[OpenShift_rhel6]
name=OpenShift RHEL6
baseurl=https://mirror.OpenShift.com/pub/OpenShift-origin/rhel-6/x86_64/
enabled=1
gpgcheck=0
Lakukan update dengan menggunakan perintah di bawah ini.
#yum update

b. DNS

Untuk konfigurasi DNS pada node hampir sama dengan pengaturan di broker, buat sebuah variabel $keyfile environment pada server broker dengan menggunakan perintah di bawah ini.
# keyfile=/var/named/meruvianyama.com.key
kemudian gunakan perintah oo-register-dns pada broker untuk mendaftartkan DNS dan IP pada broker.
# oo-register-dns -h node -d meruvianyama.com -n 192.168.2.17 -k ${keyfile}
Edit /etc/resolv.conf dan tambahkan nameserver OpenShift dengan baris di bawah ini.
# vi /etc/resolv.conf
Nameserver 192.168.2.43

c. Akses Broker ke Node

diperlukan juga sebuah access key untuk menghubungkan host broker dengan host node. Pada langkah sebelumnya, user telah membuat keypair pada host broker, dan host node membutuhkan enable access. Gunakan langkah di bawah ini.
# scp root@OpenShift.meruvianyama.com:/etc/OpenShift/rsync_id_rsa.pub /root/.ssh/
# cat /root/.ssh/rsync_id_rsa.pub >> /root/.ssh/authorized_keys
# rm /root/.ssh/rsync_id_rsa.pub

d. DHCP dan Hostname

Untuk mengirim permintaan DNS ke Host Broker, konfigurasi DHCP pada file /etc/dhcp/dhclient-eth0.conf.
# vi /etc/dhcp/dhclient-eth0.conf
Masukkan baris berikut pada file tersebut.
prepend domain-name-servers 192.168.2.43;
supersede host-name "node";
supersede domain-name "meruvianyama.com";
Edit /etc/sysconfig/network dan atur “HOSTNAME=”, dan ubah value menjadi nama hostname host node.
# vi /etc/sysconfig/network
Ubahlah :
HOSTNAME=node.meruvianyama.com
Gunakan juga perintah hostname untuk mengaplikasikan nama hostname baru ke host node.
# hostname node.meruvianyama.com

e. MCollective

MCollective pada node digunakan untuk komunikasi dengan broker host.Untuk instalasi dapat menggunakan perintah di bawah ini.
#yum install MCollective OpenShift-origin-msg-node-MCollective
konfigurasi konten pada /etc/MCollective/server.cfg dengan konfigurasi di bawah ini.
# vi /etc/MCollective/server.cfg
berisi :
topicprefix = /topic/
main_collective = MCollective
collectives = MCollective
libdir = /usr/libexec/MCollective
logfile = /var/log/MCollective.log
loglevel = debug
daemonize = 1
direct_addressing = n
registerinterval = 30
# Plugins
securityprovider = psk
plugin.psk = unset
connector = stomp
plugin.stomp.host = OpenShift.meruvianyama.com
plugin.stomp.port = 61613
plugin.stomp.user = MCollective
plugin.stomp.password = meruvian
# Facts
factsource = yaml
plugin.yaml = /etc/MCollective/facts.yaml
Buat service MCollective dapat berjalan secara otomatis ketika reboot dengan menggunakan perintah di bawah ini.
#chkconfig MCollective on
jalankan service MCollective dengan mengikuti perintah :
#service MCollective start
Gunakan perintah di bawah ini untuk memastikan Host broker mengenali host node.
#mco ping

f. Konfigurasi Node

Gunakan perintah di bawah ini untuk instalasi node.
# yum install rubygem-OpenShift-origin-node rubygem-passenger-native OpenShift-origin-port-proxy OpenShift-origin-node-util
Kemudian Install paket Cartridge yang berfungsi menjalankan aplikasi untuk berjalan pada OpenShift. Contoh cartridge pada OpenShift adalah MySQL, Jboss, PHP dan lain-lain.Install semua paket cartridge dengan menggunakan perintah di bawah ini.
#yum install OpenShift-origin-cartridges-*
Host Node membutuhkan SSH daemon untuk mendeploy aplikasi yang dibangun dengan akses GIT. Node host harus mengijinkan koneksi HTTP dan HTTPS untuk menjalankan aplikasi tanpa gear pada node. Konfigurasi firewall dan atur sistem yang dibutuhkan untuk menjalankan secara otomatis ketika reboot.
# lokkit --service=ssh
# lokkit --service=https
# lokkit --service=http
# chkconfig httpd on
# chkconfig network on
# chkconfig sshd on
Setelah itu konfigurasi PAM dengan menggunakan perintah di bawah ini.
# sed -i -e 's|pam_selinux|pam_OpenShift|g' /etc/pam.d/sshd
# for f in "runuser" "runuser-l" "sshd" "su" "system-auth-ac"
Selanjutnya adalah konfigurasi cgroups, cgroups menggunakan 2 layanan yang keduanya harus berjalan dari penahanan cgroups yang akan diberlakukan. Ikuti langkah di bawah ini untuk mengkonfigurasi cgroups.
# cp -f /usr/share/doc/*/cgconfig.conf /etc/cgconfig.conf
# restorecon -v /etc/cgconfig.conf
# mkdir /cgroup
# restorecon -v /cgroup
# chkconfig cgconfig on
# chkconfig cgred on
# chkconfig OpenShift-cgroups on
# service cgconfig restart
# service cgred restart
# service OpenShift-cgroups start
Pastikan cgroups berjalan dengan memastikan pada direktori /cgroups berisi files subsystem yaitu cpu, cpuacct, memory, freezer, devices dan net_cls . Selanjutnya adalah konfigurasi sellinux dengan mengikuti perintah berikut:
# setsebool -P httpd_unified=on httpd_can_network_connect=on
httpd_can_network_relay=on httpd_read_user_content=on
httpd_enable_homedirs=on httpd_run_stickshift=on
allow_polyinstantiation=on
Ubah pengaturan kontek SELinux dengan langkah-langkah di bawah ini.
# fixfiles -R rubygem-passenger restore && fixfiles -R mod_passenger restore
# restorecon -rv /var/run && restorecon -rv /usr/share/rubygems/gems/passenger-*
# restorecon -rv /usr/sbin/MCollectived /var/log/MCollective.log /var/run/MCollectived.pid
# restorecon -rv /var/lib/OpenShift /etc/OpenShift/node.conf /etc/httpd/conf.d/OpenShift
Langkah selanjutnya adalah konfigurasi pengaturan sysctl, ubah baris berikut pada /etc/sysctl.conf.
# vi /etc/sysctl.conf
kernel.sem = 250 32000 32 4096
Ubah juga baris di bawah ini, jika baris tidak ada tambahkan pada baris terakhir.
net.ipv4.ip_local_port_range = 15000 35530
tambahkan ukuran tabel connection-tracking dengan baris berikut :
net.netfilter.nf_conntrack_max = 1048576
Reload konfigurasi sysctl.conf dengan aktifkan konfigurasi yang baru dengan menggunakan perintah :
#sysctl -p /etc/sysctl.conf
Kemudian ubah konfigurasi SSHD dengan mengedit /etc/ssh/sshd_config dan tambahkan baris di bawah ini.
# vi /etc/ssh/sshd_config
AcceptEnv GIT_SSH
Tambahkan limit untuk nomor koneksi ke node dengan menjalankan perintah:
# perl -p -i -e "s/^#MaxSessions .*$/MaxSessions 40/" /etc/ssh/sshd_config
# perl -p -i -e "s/^#MaxStartups .*$/MaxStartups 40/" /etc/ssh/sshd_config
Setelah konfigurasi ssh, diperlukan juga konfigurasi port proxy, buka jarak antar port external yang
dapat digunakan oleh aplikasi dengan perintah:
# lokkit –port=35531-65535:tcp
Atur layanan proxy agar dapat berjalan secara otomatis ketika reboot dengan perintah:
# chkconfig OpenShift-port-proxy on
Jalankan layanann proxy :
# service OpenShift-port-proxy start
Atur layanan OpenShift-gear secara otomatis juga ketika reboot dengan perintah yang sama.
#chkconfig OpenShift-gears on
Setelah itu konfigurasi node dapat mengubah pengaturan pada /etc/OpenShift/node.conf :
# vi /etc/OpenShift/node.conf
Atur value dari “PUBLIC_IP” dengan IP Address Node yang sedang digunakan.
PUBLIC_IP=192.168.2.7
Ubah value “CLOUD_DOMAIN” dengan menggantinya dengan domain yang sedang digunakan.
CLOUD_DOMAIN=meruvianyama.com
Ubah juga “PUBLIC_HOSTNAME” dan “BROKER_HOST” dengan nama hostname Node dan IP Address Broker Host.
PUBLIC_HOSTNAME=node.meruvianyama.com
BROKER_HOST=192.168.2.43
Kemudian update OpenShift Facts dengan perintah :
#/etc/cron.minutely/OpenShift-facts
Kemudian setelah semua konfigurasi selesai, restart sistem.
# reboot

C. Uji Instalasi OpenShift

a. MCollective

pertama, pastikan layanan MCollective telah berjalan dengan menggunakan perintah:
#service MCollective status
kedua, pastikan sekali lagi node dan broker host telah saling terhubung dengan menggunakan perintah di bawah ini pada broker host.
#mco ping

b. BIND dan DNS

Pastikan broker dan node mempunyai konektifitas network satu sama lain menggunakan perintah ping.
#ping OpenShift.meruvianyama.com

c. MongoDB

pada host broker, untuk memastikan mongodb berjalan adalah dengan menggunakan perintah :
#service mongod status
jika telah berjalan, coba untuk mengoneksikan ke database.
#mongo OpenShift_broker_dev

d. File Log

Jika terjadi masalah pada broker dapat mengecek lognya pada:

  • /var/www/OpenShift/broker/log/development.log
  • /var/www/OpenShift/broker/httpd/logs/access_log
  • /var/www/OpenShift/broker/httpd/logs/error_log

Sedangkan jika terjadi masalah dengan komunikasi broker-node, dapat mengeceknya di:

  • /var/log/MCollective.log

Untuk masalah pada broker di host node, dapat mengeceknya pada:

  • /var/log/messages
  • /var/log/audit/audit.log ? untuk issue SELinux
  • /var/log/secure ? untuk interaksi user/ssh
  • /etc/OpenShift/*

e. SELinux

Penolakan dari SELinux dapat menyebabkan error. Salah satu cara untuk memeriksa apakah SELinux berada di belakang error yang tidak terdeteksi adalah menonaktifkan policy enforcement menggunakan perintah:
#setenforce 0
Setelah masalah terselesaikan kembalikan pengaturan policy enforcement dengan perintah:
#setenforce 1

D. User

a. Membuat Akun User

Buatlah akun user pada broker dengan menggunakan perintah htpasswd:
#htpasswd -c /etc/OpenShift/htpasswd user
pastikan akun telah dibuat dengan mengeceknya menggunakan perintah:
#cat /etc/openhift/htpasswd

b. Konfigurasi DNS

Untuk konfigurasi DNS, edit /etc/resolv.conf dan tambahkan IP Address broker, kemudian tambahkan address broker dan node ke /etc/hosts.

c. OpenShift Client Tool

Untuk host user, disini penulis menggunakan ubuntu dan centos sebagai sistem operasi, untuk Instalasinya dapat mengikuti langkah di bawah ini :
$sudo apt-get install ruby-full rubygems git-core (pada Linux Ubuntu)
Setelah instalasi selesai, user dapat menggunakan layanan tersebut dengan menggunakan perintah :
$ruby -e 'puts “Selamat Datang di Ruby”
$git –version




Comments:

Post a Comment:
  • HTML Syntax: Allowed