NEMガイド

NEMはNativ Environment Manager(Nativ環境マネージャー)の略称です。

このセクションでは、新しい機能や構成の開発および試験のサポートにあたって求められる機敏性を維持しつつ、Flex Enterpriseシステムから最適なサービスレベルを配信するためにNativが推奨する技術およびプロセスを紹介します。Nativeは標準のLinuxと独自のツールを組み合わせて使って、Flexのデプロイおよび構成を管理します。

コンポーネント

Nativ Environment Manager(Nativ環境マネージャー)(NEM)で管理されるシステムの保守は、原則すべての当事者間で共有される改訂管理システムを通じて行われます。これにより、以下が実現します。

• 集中型の決定版定義:どれが最新版か、またはどれをライブにすべきかなどについてあいまいさを低減します。

• 監査証跡:変更はすべて強制的にセントラルレポジトリに送られる上、変更ログの入力を義務づけられているため、問題の特定が容易です。NEMおよび他の必須ツールは、Linux(UbuntuおよびRed Hat)パッケージ経由でインストールします。詳細は以下の要件セクションで説明します。

• 現時点での普及度とアクセス制御の粒度を考慮し、Subversion改定管理システムを使用しています。ほとんどの作業は基幹で行いますが、新しいWebアプリケーションなどの試験段階作業については、NEM定義の分枝を作成することもあります。

Subversionに保存されている定義をターゲットファイルシステムにビルドするにあたっては、Apache Antを使用しています。シンプルなテンプレートをサポートし、開発者のマインドシェアも妥当であるためこの製品を選択しました。

バージョン5.0.Xから5.1.Xへのアップグレード

Flex バージョン5.1.0では、メタデータフィールドへのコメント、相互依存フィールド、LDAP統合、データソース時間指定アクション、Flex オブジェクト、スクリプトAPIの大幅な変更など、多数の新機能が導入されています。5.0.xシリーズで現在使用しているFlex 機能によっては、マイナーバージョン間でのアップグレードより若干複雑になる可能性があります。

アップグレードを迅速に正しく行うためにも、Nativまでご連絡ください。お客様の構成に必要な変更を明確にし、Flexの使用方法に見合った移行戦略を作成します。

NEMの実装

NEMシステムのNEM開始状態では、サービスが何も実行されておらず、「/nem/」ディレクトリが空になっています。以下のリストは、NEMで起こりうる遷移を示したものです。想定される状態および遷移は、付録セクションにも図解してあります。

アセットのダウンロード

• 必要なアセットは、独自のNEMコード呼び出しライブラリを使用して、ローカルにコピーされます。

• Subversion、HTTP、ローカルファイルがサポートされます。

• この遷移中の失敗は、主にネットワークの不具合によるものです。

ビルド

Apache Antがアセットを配置します。

Antが0以外のステータスで終了した場合、遷移は失敗します。

デプロイのこの段階でのみ、構成が適用されます。

これ以降の状態では、この段階で書かれた構成を読み込みます。

 

有効化

• 「/nem/nem.conf」メタサービスのサービス依存関係を再帰的に見つけ、適宜有効化します。

• 基本的にはこれが開始プロセスとなりますが、NFSマウントの有効化、データベースのステータス確認、ユーザーの追加も行われる場合があります。

注記:Flex デプロイの一環として、NEMはUIDが25001の「mio」ユーザーを作成します。このユーザーが、Flex プロセスのオーナーとなります。ネットワーク共有を使用する場合、このユーザーによる読み込みおよび書き込みが可能であることを確認する必要があります。

無効化

• 「/nem/nem.conf」メタサービスの依存関係がすべて無効化されます。例:プロセスが殺され、マウント、ユーザー、Apacheが削除されます。

破壊

• アップグレードの一環として実行されます。「/nem/」をクリーンにし、システムを開始状態に戻します。

バージョン5.1(http://bugs.mysql.com/bug.php?id=39489)で個別TRIGGER特権が導入されて以来、MySQLにはバグが存在します。この結果、バイナリロギングを有効化した状態でMySQLインスタンスにトリガーを作成しようとするとエラーメッセージが発生します(スレーブをレプリケートする場合など)。これはMySQL構成ファイルに以下のラインを追加することで回避できます。

NEMのインストール

Red Hat

Nativレポジトリの追加から開始します:

[root@localhost ~]# tee /etc/yum.repos.d/ns.repo <<EOF

[ns]

name=Red Hat Enterprise Linux 6Server - $basearch - Source

baseurl=http://packages.nativ-systems.com/redhat/ns/6Server/$basearch/

enabled=1

gpgcheck=0

EOF

 

 

Oracle Java 7は前提条件であり、Nativのレポジトリからインストールできます:

[root@localhost ~]# tee /etc/yum.repos.d/java7.repo <<EOF

[java7]

name=Red Hat Enterprise Linux $releasever - $basearch - Source

baseurl=http://packages.nativ-systems.com/redhat/java7/$releasever/$basearch/

enabled=1

gpgcheck=0

EOF

注記:レポジトリがすでに利用可能であると仮定しているため、これでNEMおよびOracle Javaをインストールできるようになります

[root@localhost ~]# yum install nativsystems-environment-manager-agent jdk

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

* base: mirrors.ukfast.co.uk

* epel: epel.check-update.co.uk

* extras: mirror.econdc.com

* updates: centos.mirroring.pulsant.co.uk

Setting up Install Process

Resolving Dependencies

--> Running transaction check

---> Package jdk.x86_64 2000:1.7.0_40 will be installed

---> Package nativsystems-environment-manager-agent.i686 0:0.1-97.el6 will be installed

Transaction Summary

================================================================================

Install 69 Package(s)

Upgrade 1 Package(s)

Total download size:164 M

Is this ok [y/N]: y

Downloading Packages:

(1/70): alsa-lib-1.0.22-3.el6.x86_64.rpm | 370 kB 00:00

Complete!

[root@localhost ~]#

Ubuntu

root@ip-10-9-5-22:~# wget -qO - http://packages.nativ-systems.com/keys | sudo apt-key add -

OK

root@ip-10-9-5-22:~# echo deb http://packages.nativ-systems.com/ stable ns | sudo tee -a /etc/apt/sources.list

deb http://packages.nativ-systems.com/ stable ns

root@ip-10-9-5-22:~# sudo apt-get update

Ign http://us-west-2.ec2.archive.ubuntu.com trusty InRelease

Ign http://us-west-2.ec2.archive.ubuntu.com trusty-updates InRelease

Hit http://us-west-2.ec2.archive.ubuntu.com trusty Release.gpg

Hit http://us-west-2.ec2.archive.ubuntu.com trusty-updates Release.gpg

(...)

Ign http://packages.nativ-systems.com stable InRelease

Ign http://security.ubuntu.com trusty-security InRelease

Hit http://packages.nativ-systems.com stable Release.gpg

Hit http://security.ubuntu.com trusty-security Release.gpg

Hit http://packages.nativ-systems.com stable Release

Hit http://security.ubuntu.com trusty-security Release

Hit http://packages.nativ-systems.com stable/ns amd64 Packages

(...)

Fetched 15.9 MB in 9s (1,623 kB/s)

Reading package lists...Done

root@ip-10-9-5-22:~# apt-get install nativsystems-environment-manager-agent

Reading package lists...Done

Building dependency tree

Reading state information...Done

The following extra packages will be installed:

(...)

The following NEW packages will be installed:

ant ant-optional apache2 apache2-bin apache2-data ca-certificates-java cifs-utils

(...)

nativsystems-environment-manager-agent nfs-common odbcinst odbcinst1debian2 openjdk-7-jre-headless oracle-java7-bin oracle-java7-jdk oracle-java7-jre

(...)

1 upgraded, 89 newly installed, 0 to remove and 66 not upgraded.

Need to get 187 MB of archives.

After this operation, 404 MB of additional disk space will be used.

Do you want to continue? [Y/n] Y

Get:1 http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ trusty/main libapr1 amd64 1.5.0-1 [85.1 kB]

(...)

done.

注記:Flex 5.1.0ではNEMバージョン0.1.4(またはそれ以降)が必要です。

NEMの構成

$ sudo vim /etc/nem-upgrade.conf

構成および定義URLを追加します:

[nem]

definition=svn https://nem.mio:XXXXXXX@repository.nativ-systems.com/svn/nem/projects/mio/platform/branches/MIO-Prod

configuration=file:///etc/mio.conf

Save and exit.

環境の構成

環境1つにつき構成ファイルを1つ作成します。構成は最低限にとどめる必要があります。通常、プロジェクトには多数の構成ファイルが関連付けられていますが、環境間での実際の変更は非常に小さいものです。例:データベースホストは環境によって異なるため、構成ファイルに入れる必要があります。ただしすべての環境で同一であるTomcatポートはハードコードすべきです。構成へのパラメーターの移動は、環境間での差異を減らすため極力行わないことを推奨します。構成ファイルは、ビルド段階でApache Antに提供されます。

Index

# Flex node type: master, job, index, playout or resource

nodetype=index

# ID to use for clustering.

clusterid=uatmio

# Defines the name of the logs directory

# /var/nem-logs/<clientname>/<domainname>/jboss/<hostname>/now/

clientname=company

# Defines master account URL.All account names will be templated according to this, ie. will be in the *.uat.company.com format

domainname=master.uat.company.com

# log4j log level

log.level=WARN

# Enable JVM debugging

jvm.debug=false

# Database configuration

# This is the same database as the master node

databasehost=10.10.10.10

databasename=miomaster

databaseuser=miomaster_user

databasepassword=miomaster_password

# Shared storage

# filestore is for indexes, cluster state and various temporary work files

# You can force nem to recursively chown the mounted storage to the user specified - recommended to set to 'mio' when using NFS.

filestore.owner=

filestore.mount=nfs 10.10.20.20:/export/storage/filestore

# Java executable path

java.executable=/usr/lib/jvm/java-7-oracle/bin/java

# Holds IP addresses of masters (i.e. where HornetQ is deployed)

master.ip.addresses=10.10.11.11,10.10.11.12

#####################

# Optional settings:

#

# set initial and maximum amount of allocated heapspace:

# heapspace=2g

#

# send log files to a log4j server listening on port 4560 (for example Logstash with a log4j input):

# logstash.server=10.10.10.9

#

# add a JMX username/password to allow for monitoring over JMX. please note that the JMX port is

# listening on localhost:9999 only and you will need to use JBoss EAP remoting-jmx libraries to connect.

# the connection string is service:jmx:remoting-jmx://localhost:9999

#

# you can find detailed information about JMX in JBoss EAP at https://planet.jboss.org/post/jmx_connections_to_jboss_as

# jmx.username=user

# jmx.password=password

Master

# Flex node type: master, job, index, playout or resource

nodetype=master

# ID to use for clustering.

clusterid=uatmio

# Defines the name of the logs directory

# /var/nem-logs/<clientname>/<domainname>/jboss/<hostname>/now/

clientname=company

# Defines master account URL.All account names will be templated according to this, ie. for the example below it would be in the "account.uat.company.com" format

domainname=master.uat.company.com

# log4j log level

log.level=WARN

# Enable JVM debugging

jvm.debug=false

# Database configuration

databasehost=10.10.10.10

databasename=miomaster

databaseuser=miomaster_user

databasepassword=miomaster_password

# Shared storage

# filestore is for indexes, cluster state and various temporary work files

# media is for your media files

# You can force nem to recursively chown the mounted storage to the user specified - recommended to set to 'mio' when using NFS.

filestore.owner=

# You can use the 'local' option ONLY if you're running in a non-clustered, single-master environment

# filestore.mount=local

filestore.mount=nfs 10.10.20.20:/export/storage/filestore

# This is your media storage share

# - you can pass options to mount.cifs as the third argument, like in the example below

# - the uid and gid options are mandatory

# - when using newer Linux kernels you might need to use sec=ntlm to mount successfully (for example with netApp)

media.mount=cifs //10.10.20.10/media username=mio,password=pass,uid=mio,gid=mio,sec=ntlm

media.dirs=RECURSIVEWILDCARD

# Keep this set to local.

public.mount=local

public.owner=

# Subdirectory of /nem/apache/holdingpages containing a page displayed by Apache when Flex is down

holdingpages=default

# CARP configuration

# Use the following if you are not using CARP:

sharedip.vhid = 1

sharedip.password = password

sharedip.addresses = 127.0.0.1

sharedip.ip = 127.0.0.3

# If using CARP, you'll need a unique vhid!

# sharedip.vhid = 13

# sharedip.password = yourp4ssw0rd

# sharedip.addresses = 10.10.11.11,10.10.11.12 # comma-separated list of IP addresses of Flex Master nodes

# sharedip.ip = 10.10.11.10 # the virtual CARP IP

# You can declare extra packages that NEM will check the operating system for before allowing you to start Flex

supplementalpackages=cifs-utils,clamav

# Intermediate SSL certificate for Apache.This is only required if specified by your certification authority.

# If not, ensure this file is a commented string

# SSLCertificateChainFile = SSLCertificateChainFile /etc/apache2/mio_intermediate.cer

SSLCertificateChainFile= # not applicable

# Java executable path

java.executable=/usr/lib/jvm/java-7-oracle/bin/java

# Holds IP addresses for master nodes (i.e. where HornetQ is deployed)

master.ip.addresses=10.10.11.11,10.10.11.12

# Holds IP addresses for job nodes (so that we can union with master nodes to form JGroups/Hazelcast clusters)

# If this is not defined, NEM will buildout with jobs executing on masters

job.ip.addresses=10.10.11.81,10.10.11.82

# The 'testuser' password if different from default

testuser.password=testuser

# Hibernate search

# indexing topology - 'standalone' means local indexing, 'slave' means relying on an indexing node

# If this is set to standalone or not set, NEM will buildout with indexing executing on masters

hibernate.search.index.topology=slave

# Flex Playout API settings

tv.nativ.mio.playout.api.endpoint=https://playout.uat.company.com

tv.nativ.mio.playout.api.username=testuser

tv.nativ.mio.playout.api.password=testuser

#####################

# Optional settings:

#

# set initial and maximum amount of allocated heapspace:

# heapspace=2g

#

# send log files to a log4j server listening on port 4560 (for example Logstash with a log4j input):

# logstash.server=10.10.10.9

#

# comma-separated list of hosts Apache should be load balancing over.If not specified, the default is all hosts in the cluster (nem.cluster.ip.addresses)

# ajp13workers=10.10.11.11,10.10.11.12

#

# add a JMX username/password to allow for monitoring over JMX. please note that the JMX port is

# listening on localhost:9999 only and you will need to use JBoss EAP remoting-jmx libraries to connect.

# the connection string is service:jmx:remoting-jmx://localhost:9999

#

# you can find detailed information about JMX in JBoss EAP at https://planet.jboss.org/post/jmx_connections_to_jboss_as

# jmx.username=user

# jmx.password=password

#

# LDAP integration

# ldap.url=ldap://ldap.server.company.com:389/

# ldap.domain=company.com

# ldap.searchbase=OU=employees,DC=company,DC=com

Job

# Flex node type: master, job, index, playout or resource

nodetype=job

# ID to use for clustering.

clusterid=uatmio

# Defines the name of the logs directory

# /var/nem-logs/<clientname>/<domainname>/jboss/<hostname>/now/

clientname=company

# Defines master account URL.All account names will be templated according to this, ie. for the example below it would be in the "account.uat.company.com" format

domainname=master.uat.company.com

# log4j log level

log.level=WARN

# Enable JVM debugging

jvm.debug=false

# Database configuration

databasehost=10.10.10.10

databasename=miomaster

databaseuser=miomaster_user

databasepassword=miomaster_password

# Shared storage

# filestore is for indexes, cluster state and various temporary work files

# media is for your media files

# You can force nem to recursively chown the mounted storage to the user specified - recommended to set to 'mio' when using NFS.

filestore.owner=

# You can use the 'local' option ONLY if you're running in a non-clustered, single-master environment

# filestore.mount=local

filestore.mount=nfs 10.10.20.20:/export/storage/filestore

# This is your media storage share

# - you can pass options to mount.cifs as the third argument, like in the example below

# - the uid and gid options are mandatory

# - when using newer Linux kernels you might need to use sec=ntlm to mount successfully (for example with netApp)

media.mount=cifs //10.10.20.10/media username=mio,password=pass,uid=mio,gid=mio,sec=ntlm

media.dirs=RECURSIVEWILDCARD

# Keep this set to local.

public.mount=local

public.owner=

# CARP configuration

# Use the following if you are not using CARP:

sharedip.vhid = 1

sharedip.password = password

sharedip.addresses = 127.0.0.1

sharedip.ip = 127.0.0.3

# If using CARP, you'll need a unique vhid!

# sharedip.vhid = 13

# sharedip.password = yourp4ssw0rd

# sharedip.addresses = 10.10.11.11,10.10.11.12 # comma-separated list of IP addresses of Flex Master nodes

# sharedip.ip = 10.10.11.10 # the virtual CARP IP

# You can declare extra packages that NEM will check the operating system for before allowing you to start Flex

supplementalpackages=cifs-utils,clamav

# Java executable path

java.executable=/usr/lib/jvm/java-7-oracle/bin/java

# Holds IP addresses for master nodes (i.e. where HornetQ is deployed)

master.ip.addresses=10.10.11.11,10.10.11.12

# Holds IP addresses for job nodes (so that we can union with master nodes to form JGroups/Hazelcast clusters)

# If this is not defined, NEM will buildout with jobs executing on masters

job.ip.addresses=10.10.11.81,10.10.11.82

# Hibernate search

# indexing topology - 'standalone' means local indexing, 'slave' means relying on an indexing node

# If this is set to standalone or not set, NEM will buildout with indexing executing on masters

hibernate.search.index.topology=slave

# Flex Playout API settings

tv.nativ.mio.playout.api.endpoint=https://playout.uat.company.com

tv.nativ.mio.playout.api.username=testuser

tv.nativ.mio.playout.api.password=testuser

#####################

# Optional settings:

#

# set initial and maximum amount of allocated heapspace:

# heapspace=2g

#

# send log files to a log4j server listening on port 4560 (for example Logstash with a log4j input):

# logstash.server=10.10.10.9

#

# add a JMX username/password to allow for monitoring over JMX. please note that the JMX port is

# listening on localhost:9999 only and you will need to use JBoss EAP remoting-jmx libraries to connect.

# the connection string is service:jmx:remoting-jmx://localhost:9999

#

# you can find detailed information about JMX in JBoss EAP at https://planet.jboss.org/post/jmx_connections_to_jboss_as

# jmx.username=user

# jmx.password=password

Playout

# Flex node type: master, job, index, playout or resource

nodetype=playout

# ID to use for clustering.

clusterid=uatmioplayout

# Defines the name of the logs directory

# /var/nem-logs/<clientname>/<domainname>/jboss/<hostname>/now/

clientname=nativ

# Defines the playout domain name

domainname=playout.stage.mioeverywhere.tv

# log4j log level

log.level=WARN

# Enable JVM debugging

jvm.debug=false

# database config

databasehost=10.10.10.10

databasename=mioplayout

databaseuser=mioplayout_user

databasepassword=mioplayout_password

# Shared storage

# This is where the lucene playout search index is stored - needs to be accessible by all playout nodes.

lucene.mount=nfs 10.10.20.20/export/storage/playout

lucene.owner=

public.mount=local

public.owner=mio

# Web service base URL to be used by Playout Wrapper.

# This is deprecated, set it as below.

tv.nativ.mio.playout.webservices.baseurl=http://127.0.0.1:30044/webservices/

# CARP configuration

# Use the following if you are not using CARP:

sharedip.vhid = 1

sharedip.password = password

sharedip.addresses = 127.0.0.1

sharedip.ip = 127.0.0.3

# If using CARP, you'll need a unique vhid!

# sharedip.vhid = 26

# sharedip.password = yourp4ssw0rd

# sharedip.addresses = 10.10.12.11,10.10.12.12 # comma-separated list of IP addresses of Flex Playout nodes

# sharedip.ip = 10.10.12.10 # the virtual CARP IP

# Intermediate SSL certificate for Apache.This is only required if specified by your certification authority.

# If not, ensure this file is a commented string

# SSLCertificateChainFile = SSLCertificateChainFile /etc/apache2/mio_intermediate.cer

SSLCertificateChainFile= # not applicable

# Java executable path

java.executable=/usr/lib/jvm/java-7-oracle/bin/java

# Holds comma separated IP addresses of all playout nodes.

playout.ip.addresses=10.10.12.11,10.10.12.12

# Total number of search results returned by lucene

tv.nativ.mio.playout.lucene.hits.per.page=5000

#####################

# Optional settings:

#

# set initial and maximum amount of allocated heapspace:

# heapspace=2g

#

# send log files to a log4j server listening on port 4560 (for example Logstash with a log4j input):

# logstash.server=10.10.10.9

#

# comma-separated list of hosts Apache should be load balancing over.If not specified, the default is all hosts in the cluster (nem.cluster.ip.addresses)

# ajp13workers=10.10.11.11,10.10.11.12

#

# add a JMX username/password to allow for monitoring over JMX. please note that the JMX port is

# listening on localhost:9999 only and you will need to use JBoss EAP remoting-jmx libraries to connect.

# the connection string is service:jmx:remoting-jmx://localhost:9999

#

# you can find detailed information about JMX in JBoss EAP at https://planet.jboss.org/post/jmx_connections_to_jboss_as

# jmx.username=user

# jmx.password=password

Resource

# Flex node type: master, job, index, playout or resource

nodetype=resource

# Defines the name of the logs directory

# /var/nem-logs/<clientname>/<domainname>/jboss/<hostname>/now/

clientname=nativ

# Master account URL

domainname=master.uat.company.com

# log4j log level

log.level=WARN

# Enable JVM debugging

jvm.debug=true

# For FTP resources set these to local

filestore.mount=local

filestore.owner=mio

incoming.mount=local

incoming.owner=mio

public.mount=local

public.owner=mio

# CARP configuration

# Use the following if you are not using CARP:

sharedip.vhid = 1

sharedip.password = password

sharedip.addresses = 127.0.0.1

sharedip.ip = 127.0.0.3

# If using CARP, you'll need a unique vhid!

# sharedip.vhid = 13

# sharedip.password = yourp4ssw0rd

# sharedip.addresses = 10.10.11.11,10.10.11.12 # comma-separated list of IP addresses of Flex Master nodes

# sharedip.ip = 10.10.11.10 # the virtual CARP IP

# You can declare extra packages that NEM will check the operating system for before allowing you to start Flex

supplementalpackages=

# Intermediate SSL certificate for Apache.This is only required if specified by your certification authority.

# If not, ensure this file is a commented string

#SSLCertificateChainFile = SSLCertificateChainFile /etc/apache2/mio.intermediate.crt

SSLCertificateChainFile = # not applicable

# Database configuration

http_databasehost=10.10.10.10

http_databasename=mio_web_upload

http_databaseuser=mio_web_upload

http_databasepassword=mio_web_upload_password

# Comma-separated list of all master nodes

master.ip.addresses=10.5.13.13,10.5.13.14

# Java executable path

java.executable=/usr/lib/jvm/java-7-oracle/bin/java

#####################

# Optional settings:

#

# set initial and maximum amount of allocated heapspace:

# heapspace=2g

#

# send log files to a log4j server listening on port 4560 (for example Logstash with a log4j input):

# logstash.server=10.10.10.9

#

# comma-separated list of hosts Apache should be load balancing over.If not specified, the default is all hosts in the cluster (nem.cluster.ip.addresses)

# ajp13workers=10.10.11.11,10.10.11.12

#

# add a JMX username/password to allow for monitoring over JMX. please note that the JMX port is

# listening on localhost:9999 only and you will need to use JBoss EAP remoting-jmx libraries to connect.

# the connection string is service:jmx:remoting-jmx://localhost:9999

#

# you can find detailed information about JMX in JBoss EAP at https://planet.jboss.org/post/jmx_connections_to_jboss_as

# jmx.username=user

# jmx.password=password

デプロイ手順

以下の例は、Flex Enterpriseのリリースバージョンの変更とそのデプロイを示したものです。

Flex を初めてデプロイする前に、以下を確認してください。

• Apacheが出接続を作成できる(RedHand CentOS上のSELinuxは、デフォルトではこれをブロックします)

• iptablesが無効化されている(RedHatおよびCentOSは、デフォルトではファイヤーウォールのルールに制限があります)

Flex サーバーにログインし、アップグレードを実行します。

$ sudo nem upgrade

INFO:root:Destroying existing environment...

INFO:root:Disabling [ucarp_01] /nem/carp/nem.conf (running)...

INFO:root:Disabled [ucarp_01] /nem/carp/nem.conf (not running)

INFO:root:Disabling [daemon_01] /nem/mio/nem.conf (running)...

WARNING:root:Still trying to kill: [daemon_01] /nem/mio/nem.conf (running)

INFO:root:Disabled [daemon_01] /nem/mio/nem.conf (not running)

INFO:root:Disabling [folder_01] /nem/public/nem.conf (running)...

INFO:root:Disabled [folder_01] /nem/public/nem.conf (not running)

...

...

INFO:root:Disabled [sql_01] /nem/db/nem.conf (running)

INFO:root:Destroying existing environment done

INFO:root:Building out new environment...

INFO:root:Checking out assets...

 

以下の質問が表示されます:

"Deploying svn https://****:****@repository.nativ-systems.com/svn/path/to/sbn/branch, revision 25.Is that okay?"

この質問に「yes」と答えると、選択した分枝の最新バージョンが Subversionにデプロイされます。「no」と答えると、デプロイする旧バージョンを問うプロンプトが表示されます。完了すると、アップグレードプロセスはデプロイの概要を表示します。

INFO:root:Checking out assets done

INFO:root:Running ant buildout...

INFO:root:Ant buildout complete

INFO:root:Tidying up checkout assets...

INFO:root:Tidying up checkout assets done

INFO:root:Building out new environment done

INFO:root:Starting new environment...

INFO:root:Enabling [meta_01] /nem/nem.conf (not running)...

INFO:root:Already enabled: [sql_01] /nem/db/nem.conf (running)

INFO:root:Enabling [users_01] /nem/users/nem.conf (not running)...

...

...

INFO:root:Enabled [meta_01] /nem/nem.conf (running)

INFO:root:Starting new environment done

INFO:root:

Deployment seems to have gone okay of:

Definition: svn https://****:****@repository.nativsystems.com/svn/nem/projects/mio/platform/branches/MIO-Maint (revision 5152)

Configuration: file:///etc/mio.conf

$

Flex を初めてデプロイする場合、次の2つのステップも実行する必要があります。

ファイルストアおよびメディアネットワーク共有に必要なディレクトリ構造を作成する。/nem/filestoreおよび/nem/mediaディレクトリでnem runを実行すると、これを行えます。不足しているディレクトリを作成するかどうかを問うプロンプトが複数表示されるので、すべてに「yes」と答えます。

作成してあったデータベースにSQLスキーマをデプロイする。詳細な説明については、以下のデータベースの保守をご覧ください。

データベースの保守

Flex MasterはデータベースでSQLトリガーを使用しているという点に注意してください。GRANT ALLの一部としてデフォルトで認められているわけではないため、データベースユーザーにTRIGGER特権が認められていることを確認する必要があります。

GRANT TRIGGER ON miomaster.* to 'miomaster'@'hostname' IDENTIFIED BY 'password';

バージョン5.1で個別TRIGGER特権が導入されて以来、MySQLにはバグが存在します(http://bugs.mysql.com/bug.php?id=39489)。この結果、バイナリロギングを有効化した状態でMySQLインスタンスにトリガーを作成しようとするとエラーメッセージが発生します(スレーブをレプリケートする場合など)。これはMySQL構成ファイルに以下のラインを追加することで回避できます。

注記:バージョン5.1(http://bugs.mysql.com/bug.php?id=39489)で個別TRIGGER特権が導入されて以来、MySQLにはバグが存在します。この結果、バイナリロギングを有効化した状態でMySQLインスタンスにトリガーを作成しようとするとエラーメッセージが発生します(スレーブをレプリケートする場合など)。これはMySQL構成ファイルに以下のラインを追加することで回避できます。

log_bin_trust_function_creators = 1

データベーススキーマの更新

バージョン5.1.0以降、NEMはスキーマ変更(もしくはデータベース移行)の追跡にFlyway(http://flywaydb.org)を使用しています。これまでに変更が適用されていない環境を開始しようとすると、以下が起こります。

INFO:root:Starting new environment...

INFO:root:Enabling [meta_01] /nem/nem.conf (not running)...

INFO:root:Enabling [flyway_01] /nem/db/nem.conf (not running)...

Command:

/usr/bin/sudo -u nem /usr/lib/jvm/java-7-oracle/bin/java -cp /usr/share/nativsystems-environment-manager-agent/flyway/lib/*:/usr/share/nativsystems-environment-manager-agent/flyway/drivers/* org.flywaydb.commandline.Main -url=jdbc:mysql://10.5.1.12:3306/miotest?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&jdbcCompliantTruncation=false&zeroDateTimeBehavior=convertToNull -user=miotest -password=miotest -sqlMigrationPrefix=V -sqlMigrationSeparator=__ -sqlMigrationSuffix= -placeholderPrefix=asdf -locations=filesystem:/nem/db/migrations validate

Exit status:

1

Stdout:

Flyway 3.2.1 by Boxfuse

Database: jdbc:mysql://10.10.10.10:3306/miotest (MySQL 5.6)

Validated 7 migrations (execution time 00:00.014s)

ERROR:Validate failed.Detected resolved migration not applied to database:001

Stderr:

 

 

以下のようにしてパッチを適用します。

~$ sudo nem -f /nem/db/nem.conf run

 

NEMは、複数のFlywayオプションを列挙したメニューを表示します。Migrateを選択してEnterキーを押し、残りの変更をすべて適用します。Infoオプションを使用すると、どの変更が適用済みで、どの変更が保留中かを随時確認することができます。

保守

「nem」コマンドでは、以下のコマンド/引数が使用できます。

Enable

• たとえばプロセスを開始したり、NFS経由でフォルダーをマウントしたりします。

• SQL適用などのような破壊的な変更については、変更が適用されるまでサービスの有効化が拒否されます(例外を投げるか、デプロイを中断します)。

• これは再帰的にサービス依存関係を開始します。これを必要としないか望まない場合、「--no-dependencies」コマンドライン引数を入れます。

Disable

• プロセスの停止、NFSの「unmount」など。

• SQL変更など一部のサービスについては何の影響も与えません。

Restart

• シーケンスで無効化および有効化コマンドを呼び出します。

Status

• モジュールのステータス(実行中かどうか)およびその依存関係.run:を示します。

• SQLおよびフォルダーなどのモジュールに対話セッションを提供するか、デバッグのためフォアグラウンドでプロセスを実行します。

• 破壊的な変更は、ユーザーとの対話後に初めて実行されます。

Upgrade

/etc/nem-upgrade.confを読み込み、構成および定義URLに基づきアップグレードを実行します。

• この文書の付録で図解されているとおり、システムはbuilt outまたはfully enabledステータスから始まり、start状態になった後fully enabled状態に戻ります。

• 実行中のサービスはすべて無効化され、新規コードがしかるべき位置に配置された後に有効化されます。有効化と無効化の順序は、依存関係に基づいて計算されます。

History

• 以前のデプロイの日付、時刻、改訂版数およびURLをリストします。

Tree

選択したモジュールの依存関係のツリーを表示します。こうしたコマンドのほとんどで、現在作業中のディレクトリに「nem.conf」ファイルが存在するか、-fフラグで「nem.conf」ファイルへのパスを与える必要があります。例:

$ cd /nem/apache/

/nem/apache$ sudo nem status

INFO:root:[apache_01] /nem/apache/nem.conf (running)

/nem/apache$

上のコマンドの代わりに、同等のものとして以下のコマンドを使用することもできます。

$ sudo nem -f /nem/apache/nem.conf status

INFO:root:[apache_01] /nem/apache/nem.conf (running)

$

SSL証明書

NEMデプロイプロセスは、システムの定義済みの場所にSSL証明書(および鍵)が存在することを期待します。認証局が中間証明書の使用を要求する場合、環境構成でSSLCertificateChainFileオプションを使用すると対応できます。これは、SSL暗号化を行っている負荷分散装置経由でWebコンソールにアクセスする環境の場合でも求められます。

証明書は/etc/apache2/mio.crtに、鍵は/etc/apache2/mio.keyに置く必要があります。

現時点で証明書が存在しない場合(例:試験環境を立ち上げたばかり、または単に証明書の発行待機中)、以下の方法で自己署名証明書を作成し、使用することができます。

1.)非公開鍵を生成します:

root@ip-10-9-5-22:~# openssl genrsa -des3 -out server.key 1024

Generating RSA private key, 1024 bit long modulus

.......++++++

....++++++

e is 65537 (0x10001)

Enter pass phrase for server.key

Verifying - Enter pass phrase for server.key:

2.)証明書署名要求を作成します:

root@ip-10-9-5-22:~# openssl req -new -key server.key -out server.csr

Enter pass phrase for server.key:

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [AU]:

State or Province Name (full name) [Some-State]:

Locality Name (eg, city) []:

Organization Name (eg, company) [Internet Widgits Pty Ltd]:

Organizational Unit Name (eg, section) []:

Common Name (e.g. server FQDN or YOUR name) []:

Email Address []:

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

3.)鍵のパスフレーズを削除します:

root@ip-10-9-5-22:~# cp server.key server.key.org

root@ip-10-9-5-22:~# openssl rsa -in server.key.org -out server.key

Enter pass phrase for server.key.org:

writing RSA key

4.)自己署名証明書を生成します:

root@ip-10-9-5-22:~# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Signature ok

subject=/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd

 

Getting Private key

5.)鍵および証明書ファイルをインストールします:

root@ip-10-9-5-22:~# cp server.key /etc/apache2/mio.key

root@ip-10-9-5-22:~# cp server.crt /etc/apache2/mio.crt

環境の構成

環境1つにつき構成ファイルを1つ作成します。構成は最低限にとどめる必要があります。通常、プロジェクトには多数の構成ファイルが関連付けられていますが、環境間での実際の変更は非常に小さいものです。例:データベースホストは環境によって異なるため、構成ファイルに入れる必要があります。ただしすべての環境で同一であるTomcatポートはハードコードすべきです。構成へのパラメーターの移動は、環境間での差異を減らすため極力行わないことを推奨します。構成ファイルは、ビルド段階でApache Antに提供されます。

Index

# Flex node type: master, job, index, playout or resource

nodetype=index

# ID to use for clustering.

clusterid=uatmio

# Defines the name of the logs directory

# /var/nem-logs/<clientname>/<domainname>/jboss/<hostname>/now/

clientname=company

# Defines master account URL.All account names will be templated according to this, ie. will be in the *.uat.company.com format

domainname=master.uat.company.com

# log4j log level

log.level=WARN

# Enable JVM debugging

jvm.debug=false

# Database configuration

# This is the same database as the master node

databasehost=10.10.10.10

databasename=miomaster

databaseuser=miomaster_user

databasepassword=miomaster_password

# Shared storage

# filestore is for indexes, cluster state and various temporary work files

# You can force nem to recursively chown the mounted storage to the user specified - recommended to set to 'mio' when using NFS.

filestore.owner=

filestore.mount=nfs 10.10.20.20:/export/storage/filestore

# Java executable path

java.executable=/usr/lib/jvm/java-7-oracle/bin/java

# Holds IP addresses of masters (i.e. where HornetQ is deployed)

master.ip.addresses=10.10.11.11,10.10.11.12

#####################

# Optional settings:

#

# set initial and maximum amount of allocated heapspace:

# heapspace=2g

#

# send log files to a log4j server listening on port 4560 (for example Logstash with a log4j input):

# logstash.server=10.10.10.9

#

# add a JMX username/password to allow for monitoring over JMX. please note that the JMX port is

# listening on localhost:9999 only and you will need to use JBoss EAP remoting-jmx libraries to connect.

# the connection string is service:jmx:remoting-jmx://localhost:9999

#

# you can find detailed information about JMX in JBoss EAP at https://planet.jboss.org/post/jmx_connections_to_jboss_as

# jmx.username=user

# jmx.password=password

Master

# Flex node type: master, job, index, playout or resource

nodetype=master

# ID to use for clustering.

clusterid=uatmio

# Defines the name of the logs directory

# /var/nem-logs/<clientname>/<domainname>/jboss/<hostname>/now/

clientname=company

# Defines master account URL.All account names will be templated according to this, ie. for the example below it would be in the "account.uat.company.com" format

domainname=master.uat.company.com

# log4j log level

log.level=WARN

# Enable JVM debugging

jvm.debug=false

# Database configuration

databasehost=10.10.10.10

databasename=miomaster

databaseuser=miomaster_user

databasepassword=miomaster_password

# Shared storage

# filestore is for indexes, cluster state and various temporary work files

# media is for your media files

# You can force nem to recursively chown the mounted storage to the user specified - recommended to set to 'mio' when using NFS.

filestore.owner=

# You can use the 'local' option ONLY if you're running in a non-clustered, single-master environment

# filestore.mount=local

filestore.mount=nfs 10.10.20.20:/export/storage/filestore

# This is your media storage share

# - you can pass options to mount.cifs as the third argument, like in the example below

# - the uid and gid options are mandatory

# - when using newer Linux kernels you might need to use sec=ntlm to mount successfully (for example with netApp)

media.mount=cifs //10.10.20.10/media username=mio,password=pass,uid=mio,gid=mio,sec=ntlm

media.dirs=RECURSIVEWILDCARD

# Keep this set to local.

public.mount=local

public.owner=

# Subdirectory of /nem/apache/holdingpages containing a page displayed by Apache when Flex is down

holdingpages=default

# CARP configuration

# Use the following if you are not using CARP:

sharedip.vhid = 1

sharedip.password = password

sharedip.addresses = 127.0.0.1

sharedip.ip = 127.0.0.3

# If using CARP, you'll need a unique vhid!

# sharedip.vhid = 13

# sharedip.password = yourp4ssw0rd

# sharedip.addresses = 10.10.11.11,10.10.11.12 # comma-separated list of IP addresses of Flex Master nodes

# sharedip.ip = 10.10.11.10 # the virtual CARP IP

# You can declare extra packages that NEM will check the operating system for before allowing you to start Flex

supplementalpackages=cifs-utils,clamav

# Intermediate SSL certificate for Apache.This is only required if specified by your certification authority.

# If not, ensure this file is a commented string

# SSLCertificateChainFile = SSLCertificateChainFile /etc/apache2/mio_intermediate.cer

SSLCertificateChainFile= # not applicable

# Java executable path

java.executable=/usr/lib/jvm/java-7-oracle/bin/java

# Holds IP addresses for master nodes (i.e. where HornetQ is deployed)

master.ip.addresses=10.10.11.11,10.10.11.12

# Holds IP addresses for job nodes (so that we can union with master nodes to form JGroups/Hazelcast clusters)

# If this is not defined, NEM will buildout with jobs executing on masters

job.ip.addresses=10.10.11.81,10.10.11.82

# Hibernate search

# indexing topology - 'standalone' means local indexing, 'slave' means relying on an indexing node

# If this is set to standalone or not set, NEM will buildout with indexing executing on masters

hibernate.search.index.topology=slave

# Flex Playout API settings

tv.nativ.mio.playout.api.endpoint=https://playout.uat.company.com

tv.nativ.mio.playout.api.username=testuser

tv.nativ.mio.playout.api.password=testuser

#####################

# Optional settings:

#

# set initial and maximum amount of allocated heapspace:

# heapspace=2g

#

# send log files to a log4j server listening on port 4560 (for example Logstash with a log4j input):

# logstash.server=10.10.10.9

#

# comma-separated list of hosts Apache should be load balancing over.If not specified, the default is all hosts in the cluster (nem.cluster.ip.addresses)

# ajp13workers=10.10.11.11,10.10.11.12

#

# add a JMX username/password to allow for monitoring over JMX. please note that the JMX port is

# listening on localhost:9999 only and you will need to use JBoss EAP remoting-jmx libraries to connect.

# the connection string is service:jmx:remoting-jmx://localhost:9999

#

# you can find detailed information about JMX in JBoss EAP at https://planet.jboss.org/post/jmx_connections_to_jboss_as

# jmx.username=user

# jmx.password=password

Master

# Flex node type: master, job, index, playout or resource

nodetype=master

# ID to use for clustering.

clusterid=uatmio

# Defines the name of the logs directory

# /var/nem-logs/<clientname>/<domainname>/jboss/<hostname>/now/

clientname=company

# Defines master account URL.All account names will be templated according to this, ie. for the example below it would be in the "account.uat.company.com" format

domainname=master.uat.company.com

# log4j log level

log.level=WARN

# Enable JVM debugging

jvm.debug=false

# Database configuration

databasehost=10.10.10.10

databasename=miomaster

databaseuser=miomaster_user

databasepassword=miomaster_password

# Shared storage

# filestore is for indexes, cluster state and various temporary work files

# media is for your media files

# You can force nem to recursively chown the mounted storage to the user specified - recommended to set to 'mio' when using NFS.

filestore.owner=

# You can use the 'local' option ONLY if you're running in a non-clustered, single-master environment

# filestore.mount=local

filestore.mount=nfs 10.10.20.20:/export/storage/filestore

# This is your media storage share

# - you can pass options to mount.cifs as the third argument, like in the example below

# - the uid and gid options are mandatory

# - when using newer Linux kernels you might need to use sec=ntlm to mount successfully (for example with netApp)

media.mount=cifs //10.10.20.10/media username=mio,password=pass,uid=mio,gid=mio,sec=ntlm

media.dirs=RECURSIVEWILDCARD

# Keep this set to local.

public.mount=local

public.owner=

# Subdirectory of /nem/apache/holdingpages containing a page displayed by Apache when Flex is down

holdingpages=default

# CARP configuration

# Use the following if you are not using CARP:

sharedip.vhid = 1

sharedip.password = password

sharedip.addresses = 127.0.0.1

sharedip.ip = 127.0.0.3

# If using CARP, you'll need a unique vhid!

# sharedip.vhid = 13

# sharedip.password = yourp4ssw0rd

# sharedip.addresses = 10.10.11.11,10.10.11.12 # comma-separated list of IP addresses of Flex Master nodes

# sharedip.ip = 10.10.11.10 # the virtual CARP IP

# You can declare extra packages that NEM will check the operating system for before allowing you to start Flex

supplementalpackages=cifs-utils,clamav

# Intermediate SSL certificate for Apache.This is only required if specified by your certification authority.

# If not, ensure this file is a commented string

# SSLCertificateChainFile = SSLCertificateChainFile /etc/apache2/mio_intermediate.cer

SSLCertificateChainFile= # not applicable

# Java executable path

java.executable=/usr/lib/jvm/java-7-oracle/bin/java

# Holds IP addresses for master nodes (i.e. where HornetQ is deployed)

master.ip.addresses=10.10.11.11,10.10.11.12

# Holds IP addresses for job nodes (so that we can union with master nodes to form JGroups/Hazelcast clusters)

# If this is not defined, NEM will buildout with jobs executing on masters

job.ip.addresses=10.10.11.81,10.10.11.82

# Hibernate search

# indexing topology - 'standalone' means local indexing, 'slave' means relying on an indexing node

# If this is set to standalone or not set, NEM will buildout with indexing executing on masters

hibernate.search.index.topology=slave

# Flex Playout API settings

tv.nativ.mio.playout.api.endpoint=https://playout.uat.company.com

tv.nativ.mio.playout.api.username=testuser

tv.nativ.mio.playout.api.password=testuser

#####################

# Optional settings:

#

# set initial and maximum amount of allocated heapspace:

# heapspace=2g

#

# send log files to a log4j server listening on port 4560 (for example Logstash with a log4j input):

# logstash.server=10.10.10.9

#

# comma-separated list of hosts Apache should be load balancing over.If not specified, the default is all hosts in the cluster (nem.cluster.ip.addresses)

# ajp13workers=10.10.11.11,10.10.11.12

#

# add a JMX username/password to allow for monitoring over JMX. please note that the JMX port is

# listening on localhost:9999 only and you will need to use JBoss EAP remoting-jmx libraries to connect.

# the connection string is service:jmx:remoting-jmx://localhost:9999

#

# you can find detailed information about JMX in JBoss EAP at https://planet.jboss.org/post/jmx_connections_to_jboss_as

# jmx.username=user

# jmx.password=password

Job

# Flex node type: master, job, index, playout or resource

nodetype=job

# ID to use for clustering.

clusterid=uatmio

# Defines the name of the logs directory

# /var/nem-logs/<clientname>/<domainname>/jboss/<hostname>/now/

clientname=company

# Defines master account URL.All account names will be templated according to this, ie. for the example below it would be in the "account.uat.company.com" format

domainname=master.uat.company.com

# log4j log level

log.level=WARN

# Enable JVM debugging

jvm.debug=false

# Database configuration

databasehost=10.10.10.10

databasename=miomaster

databaseuser=miomaster_user

databasepassword=miomaster_password

# Shared storage

# filestore is for indexes, cluster state and various temporary work files

# media is for your media files

# You can force nem to recursively chown the mounted storage to the user specified - recommended to set to 'mio' when using NFS.

filestore.owner=

# You can use the 'local' option ONLY if you're running in a non-clustered, single-master environment

# filestore.mount=local

filestore.mount=nfs 10.10.20.20:/export/storage/filestore

# This is your media storage share

# - you can pass options to mount.cifs as the third argument, like in the example below

# - the uid and gid options are mandatory

# - when using newer Linux kernels you might need to use sec=ntlm to mount successfully (for example with netApp)

media.mount=cifs //10.10.20.10/media username=mio,password=pass,uid=mio,gid=mio,sec=ntlm

media.dirs=RECURSIVEWILDCARD

# Keep this set to local.

public.mount=local

public.owner=

# CARP configuration

# Use the following if you are not using CARP:

sharedip.vhid = 1

sharedip.password = password

sharedip.addresses = 127.0.0.1

sharedip.ip = 127.0.0.3

# If using CARP, you'll need a unique vhid!

# sharedip.vhid = 13

# sharedip.password = yourp4ssw0rd

# sharedip.addresses = 10.10.11.11,10.10.11.12 # comma-separated list of IP addresses of Flex Master nodes

# sharedip.ip = 10.10.11.10 # the virtual CARP IP

# You can declare extra packages that NEM will check the operating system for before allowing you to start Flex

supplementalpackages=cifs-utils,clamav

# Java executable path

java.executable=/usr/lib/jvm/java-7-oracle/bin/java

# Holds IP addresses for master nodes (i.e. where HornetQ is deployed)

master.ip.addresses=10.10.11.11,10.10.11.12

# Holds IP addresses for job nodes (so that we can union with master nodes to form JGroups/Hazelcast clusters)

# If this is not defined, NEM will buildout with jobs executing on masters

job.ip.addresses=10.10.11.81,10.10.11.82

# Hibernate search

# indexing topology - 'standalone' means local indexing, 'slave' means relying on an indexing node

# If this is set to standalone or not set, NEM will buildout with indexing executing on masters

hibernate.search.index.topology=slave

# Flex Playout API settings

tv.nativ.mio.playout.api.endpoint=https://playout.uat.company.com

tv.nativ.mio.playout.api.username=testuser

tv.nativ.mio.playout.api.password=testuser

#####################

# Optional settings:

#

# set initial and maximum amount of allocated heapspace:

# heapspace=2g

#

# send log files to a log4j server listening on port 4560 (for example Logstash with a log4j input):

# logstash.server=10.10.10.9

#

# add a JMX username/password to allow for monitoring over JMX. please note that the JMX port is

# listening on localhost:9999 only and you will need to use JBoss EAP remoting-jmx libraries to connect.

# the connection string is service:jmx:remoting-jmx://localhost:9999

#

# you can find detailed information about JMX in JBoss EAP at https://planet.jboss.org/post/jmx_connections_to_jboss_as

# jmx.username=user

# jmx.password=password

Playout

# Flex node type: master, job, index, playout or resource

nodetype=playout

# ID to use for clustering.

clusterid=uatmioplayout

# Defines the name of the logs directory

# /var/nem-logs/<clientname>/<domainname>/jboss/<hostname>/now/

clientname=nativ

# Defines the playout domain name

domainname=playout.stage.mioeverywhere.tv

# log4j log level

log.level=WARN

# Enable JVM debugging

jvm.debug=false

# database config

databasehost=10.10.10.10

databasename=mioplayout

databaseuser=mioplayout_user

databasepassword=mioplayout_password

# Shared storage

# This is where the lucene playout search index is stored - needs to be accessible by all playout nodes.

lucene.mount=nfs 10.10.20.20/export/storage/playout

lucene.owner=

# Web service base URL to be used by Playout Wrapper.

# This is deprecated, set it as below.

tv.nativ.mio.playout.webservices.baseurl=http://127.0.0.1:30044/webservices/

# CARP configuration

# Use the following if you are not using CARP:

sharedip.vhid = 1

sharedip.password = password

sharedip.addresses = 127.0.0.1

sharedip.ip = 127.0.0.3

# If using CARP, you'll need a unique vhid!

# sharedip.vhid = 26

# sharedip.password = yourp4ssw0rd

# sharedip.addresses = 10.10.12.11,10.10.12.12 # comma-separated list of IP addresses of Flex Playout nodes

# sharedip.ip = 10.10.12.10 # the virtual CARP IP

# Intermediate SSL certificate for Apache.This is only required if specified by your certification authority.

# If not, ensure this file is a commented string

# SSLCertificateChainFile = SSLCertificateChainFile /etc/apache2/mio_intermediate.cer

SSLCertificateChainFile= # not applicable

# Java executable path

java.executable=/usr/lib/jvm/java-7-oracle/bin/java

# Holds comma separated IP addresses of all playout nodes.

playout.ip.addresses=10.10.12.11,10.10.12.12

# Total number of search results returned by lucene

tv.nativ.mio.playout.lucene.hits.per.page=5000

#####################

# Optional settings:

#

# set initial and maximum amount of allocated heapspace:

# heapspace=2g

#

# send log files to a log4j server listening on port 4560 (for example Logstash with a log4j input):

# logstash.server=10.10.10.9

#

# comma-separated list of hosts Apache should be load balancing over.If not specified, the default is all hosts in the cluster (nem.cluster.ip.addresses)

# ajp13workers=10.10.11.11,10.10.11.12

#

# add a JMX username/password to allow for monitoring over JMX. please note that the JMX port is

# listening on localhost:9999 only and you will need to use JBoss EAP remoting-jmx libraries to connect.

# the connection string is service:jmx:remoting-jmx://localhost:9999

#

# you can find detailed information about JMX in JBoss EAP at https://planet.jboss.org/post/jmx_connections_to_jboss_as

# jmx.username=user

# jmx.password=password

Resource

# Flex node type: master, job, index, playout or resource

nodetype=resource

# Defines the name of the logs directory

# /var/nem-logs/<clientname>/<domainname>/jboss/<hostname>/now/

clientname=nativ

# Master account URL

domainname=master.uat.company.com

# log4j log level

log.level=WARN

# Enable JVM debugging

jvm.debug=true

# For FTP resources set these to local

filestore.mount=local

filestore.owner=mio

incoming.mount=local

incoming.owner=mio

# CARP configuration

# Use the following if you are not using CARP:

sharedip.vhid = 1

sharedip.password = password

sharedip.addresses = 127.0.0.1

sharedip.ip = 127.0.0.3

# If using CARP, you'll need a unique vhid!

# sharedip.vhid = 13

# sharedip.password = yourp4ssw0rd

# sharedip.addresses = 10.10.11.11,10.10.11.12 # comma-separated list of IP addresses of Flex Master nodes

# sharedip.ip = 10.10.11.10 # the virtual CARP IP

# You can declare extra packages that NEM will check the operating system for before allowing you to start Flex

supplementalpackages=

# Intermediate SSL certificate for Apache.This is only required if specified by your certification authority.

# If not, ensure this file is a commented string

#SSLCertificateChainFile = SSLCertificateChainFile /etc/apache2/mio.intermediate.crt

SSLCertificateChainFile = # not applicable

# Database configuration

databasehost=10.10.10.10

databasename=mioresource

databaseuser=mioresource_user

databasepassword=mioresource_password

# Database configuration for the HTML5 web uploader

http_databasehost=10.10.10.10

http_databasename=mio_web_upload

http_databaseuser=mio_web_upload

http_databasepassword=mio_web_upload_password

# Comma-separated list of all master nodes

master.ip.addresses=10.5.13.13,10.5.13.14

# Java executable path

java.executable=/usr/lib/jvm/java-7-oracle/bin/java

#####################

# Optional settings:

#

# set initial and maximum amount of allocated heapspace:

# heapspace=2g

#

# send log files to a log4j server listening on port 4560 (for example Logstash with a log4j input):

# logstash.server=10.10.10.9

#

# comma-separated list of hosts Apache should be load balancing over.If not specified, the default is all hosts in the cluster (nem.cluster.ip.addresses)

# ajp13workers=10.10.11.11,10.10.11.12

#

# add a JMX username/password to allow for monitoring over JMX. please note that the JMX port is

# listening on localhost:9999 only and you will need to use JBoss EAP remoting-jmx libraries to connect.

# the connection string is service:jmx:remoting-jmx://localhost:9999

#

# you can find detailed information about JMX in JBoss EAP at https://planet.jboss.org/post/jmx_connections_to_jboss_as

# jmx.username=user

# jmx.password=password

データベースの保守

Flex MasterはデータベースでSQLトリガーを使用しているという点に注意してください。GRANT ALLの一部としてデフォルトで認められているわけではないため、データベースユーザーにTRIGGER特権が認められていることを確認する必要があります。

GRANT TRIGGER ON miomaster.* to 'miomaster'@'hostname' IDENTIFIED BY 'password';

バージョン5.1で個別TRIGGER特権が導入されて以来、MySQLにはバグが存在します(http://bugs.mysql.com/bug.php?id=39489)。この結果、バイナリロギングを有効化した状態でMySQLインスタンスにトリガーを作成しようとするとエラーメッセージが発生します(スレーブをレプリケートする場合など)。これはMySQL構成ファイルに以下のラインを追加することで回避できます。

log_bin_trust_function_creators = 1

メタデータスキーマの更新

前述したとおり、データベースの変更はLiquibaseで追跡されています。データベースの変更が適用されなかった場合、適用が実行されるまでアップグレードは失敗します。動作は以下のとおりです。

INFO:root:Starting new environment...

INFO:root:Enabling [meta_01] /nem/nem.conf (not running)...

INFO:root:Enabling [sql_01] /nem/db/nem.conf (not running)...

INFO:root:Enabling [sql_01] /nem/db/nem.conf (not running)...

Could not start

Command:

/usr/bin/sudo -u nem /usr/java/default/bin/java -Djava.net.preferIPv4Stack=true -client -cp /nem/db:/usr/share/nativsystems-environment-manager-agent/liquibase/liquibase.jar

...

... -- LiquiBase version:2.0-rc1

-- *********************************************************************

-- Lock Database

-- Changeset

/nem/db/liquibase/036_remove_extract_action_jsp.sql.xml::generated::antscript::(Checksum:2:c37bc10575fc36d1b09257c3b6de4dc2)

UPDATE ACTION_TYPE SET JSP_NAME_ = 'file_action' where JSP_NAME_ = 'extract_action';

INSERT INTO `DATABASECHANGELOG` (`AUTHOR`, `COMMENTS`, `DATEEXECUTED`,

`DESCRIPTION`, `EXECTYPE`, `FILENAME`, `ID`, `LIQUIBASE`, `MD5SUM`, `ORDEREXECUTED`) VALUES ('ant script', '', NOW(), 'Custom SQL', 'EXECUTED','/nem/db/liquibase/036_remove_extract_action_jsp.sql.xml', 'generated', '2.0-rc1', '2:c37bc10575fc36d1b09257c3b6de4dc2', 37);

-- Release Database Lock

Stderr:

INFO 12/10/13 8:47 AM:liquibase:Successfully acquired change log lock

INFO 12/10/13 8:47 AM:liquibase:Reading from `DATABASECHANGELOG`

...

...INFO 12/10/13 8:47 AM:liquibase:ChangeSet /nem/db/liquibase/036_remove_extract_action_jsp.sql.xml::generated::ant script ran successfully in 0ms

INFO 12/10/13 8:47 AM:liquibase:Successfully released change log lock

~$

以下のようにしてパッチを適用します。

~$ sudo nem -f /nem/db/nem.conf run

NEMは次にオプションが3つあるメニューを表示します。「liquibase (non-interactive)」を選択してデフォルト変更をすべて適用するか、「liquibase」を選択して変更を1つずつ適用するか、データベース構成や接続性問題のデバッグを行ううえで有用な対話コマンドラインデータベースセッションを開始するかです。同様のプロセスは、フォルダーの作成にも使用されます。

Flex の監視

このセクションでは、Flex システムのステータスを検証するために監視できるアイテムを提案します。

Flex マネージャーノード

Flex マスターノードは、Oracle Java、JBossおよびApache Webサーバーを利用します。そのため、以下のアイテムの試験にあたっては標準監視ツールが使用できます。

HTTPの確認

(ホスト名の例としてmio.localを使用)

Flex コンポーネントHTTP GET URLの予期する応答コード

コンソール(Apache)https://mio.local/ 200

コンソール(JBoss)http://mio.local:30044/ 200

Flex はアクセス試行の対象となるアカウントのURLを確認するため、Flex マスターノードでこの確認を行うには仮のHostヘッダーを作成する必要があります。以下にいくつか例を挙げます。

$ curl -s -k -D- -H"Host: master.stage.mioeverywhere.tv" https://127.0.0.1|head -1

HTTP/1.1 200 OK

$ curl -s -D- -H"Host: master.stage.mioeverywhere.tv" 127.0.0.1:30044|head -1

HTTP/1.1 200 OK

以下は成功しません

$ curl -s -k -D- https://127.0.0.1|head -1

HTTP/1.1 404 Not Found

• ホストや正しいヘッダーが見つからず、404が戻される。

$ curl -s -k -D- https://localhost|head -1

HTTP/1.1 500 Internal Server Error

Localhostがホストヘッダーとして使用されており、500が戻される。

$ curl -s -k -D- -H"Host: stage.mioeverywhere.tv" https://127.0.0.1|head -1

HTTP/1.1 404 Not Found

• 使用されているドメインは正しいがアカウントが指定されていない

NEMモジュール

このセクションでは、NEM内で利用可能な機能の概要を扱います。Flex システムの日常的な操作にはNEMモジュールの深い理解は必要ありませんが、Flexの開始時、停止時、デプロイ時に見つかった問題をデバッグするにあたっては役立つことがあります。

環境に適用される必要があるルーティーンタスクの大半を取り扱う目的で、多数のモジュールが実装されています。モジュール定義は「nem.conf」ファイルで行います。こうした保守のほとんどはNativが担当しますが、軽微な変更についてはクライアントや代理店による実施が可能です。このセクションは決定版のガイドというよりは、何を実行できるかの紹介を目的としています。日常の保守においては、クライアントや代理店にNEMモジュールの知識が求められることはありません。Subversionのどこに新規アセットや構成をドロップすればよいかがわかれば十分です。

使用されるモジュールのタイプは、nem.confファイル内のセットです。例:

~$ cat /nem/apache/nem.conf

[nem]

service = apache_01

depends = /nem/logs/apache/nem.conf

monitors = ~$

このファイルは、以下のセクションで説明するApacheモジュールを利用し、/nem/logs/apache/nem.confの下にあるログフォルダーへの依存関係を設定します。

メタ

NEMのサービスは依存関係のツリーとして開始されます。メタサービスはこのツリーのルートとなるよう意図されたものです。これはNativから提供された構成ですでに定義済みです。依存関係はここに直接追加することも、サブコンポーネントに追加することもできます。

Apache

Apache構成はApacheサービスで実施できます。このモジュールは、所定の構成を非常に基本的なApacheインストールに含めるだけです。Apacheの日常的な保守として、関連するvhost.confファイルを編集してください。新規仮想ホストを定義したい場合、ServiceNowリクエストを開き、Nativに実行を依頼してください。

Flyway

FlywayサービスはFlywayのラッパーです。詳細についてはflywaydb.org/をご覧ください。このモジュールは、データベース更新がすべての環境で繰り返されることをアサートできるようにします。

SQL

Liquibaseデータベース更新サービスはFlywyaを考慮して5.1シリーズでは推奨されていませんが、5.0シリーズではデフォルトのままであり、5.0.15から5.1.0にアップグレードする必要があるということに注意してください。

SQLサービスはLiquibaseのラッパーです。詳細はhttp://www.liquibase.org/をご覧ください。このモジュールは、データベース更新がすべての環境で繰り返されることをアサートできるようにします。SQLモジュール実装の日常的な保守としては、Subversionへの新規「.sql」ファイルの追加が求められることが一般的です。

データベース変更の追跡に他のプロセスが使用されている場合、SQLモジュール依存関係の定義がないままデータベース依存関係を持つことも考えられます。変更がSQLモジュールで定義されてはいるものの適用されていない場合、NEMはアップグレードを拒否します。

新規変更を作成するのではなく、ソースファイルを後から変更した場合、これはサポートされず予期されない動作が起こります。

パッケージ

基本のインストールに含まれていないUbuntu/Red Hatパッケージの追加インストールをリクエストする際に、パッケージモジュールを使用できます。これに対する更新はNativが実行すべきであり、チケットシステムを通じてリクエストすることができます。

プロセス

プロセスモジュールはTomcactやJBossなどのデーモンを開始および停止します。これはstart-stop-daemonのラッパーです。

Nativはこのタスクにシェルスクリプトを使用しないことに決めており、この置換は整合性と信頼性を高めるものであることが証明されています。「nem.conf」パラメーターは、たとえば以下として定義できます。

• 実行の主体となるユーザー

• 環境変数

• プロセス引数

• Javaプロパティ

これらは開発者にとって十分直観的であるように考えられていますが、不明な点がある場合にはチケットに「init scripts」にどのような変更を加えればよいかを提案し、ヘルプデスクまでお送りください。プロセスモジュールの日常的な保守は、主にWARファイルの更新となります。

フォルダー

フォルダーモジュールを使用すると、データをいつローカルディスクまたはNASに永続的に保存するかを開発者が定義することができます。

これが必要な場合、ヘルプデスクまでご連絡ください。

ログ

ログ用に特殊なタイプのフォルダーを作成することができます。ログはパス「/var/nem-logs/<client>/<domain>/<service>/<hostname>/now」のフォルダーに保存されます。以下の構成例の場合、ログはホスト名がmioインスタンスを実行しているマシンの実際のホスト名となっている「/var/nem-logs/nativ/master.example.com/jboss/<hostname>/now」に存在します。

$ cat /nem/logs/jboss/nem.conf

[nem]

service = logfolder_01

depends =

monitors =

[logfolder]

client = nativ

domain = master.example.com

service = jboss

[folder]

owner = mio

ユーザー

UNIXユーザーは25000から29998の範囲で作成することができます。セキュリティの観点から、すべてのデーモンが異なるユーザーとして実行されているのが理想です。新規デーモンが作成されると、Nativは通常ここに新規ユーザーを追加します。

付録

この記事はお役にたちましたか?