「システム基盤構築のプロフェッショナル」レック・テクノロジー・コンサルティングJapanese | English

レック・テクノロジー・コンサルティング株式会社

技術ブログ

HOME > 技術ブログ > 月別アーカイブ: H N

月別アーカイブ: H N

Top Award 2014 ~Australia – Gold Coast Part3~

いい歳ですが、真夏のような暑さがこんなに心地よいのは人生で初めてかもしれません。

hn_topw2015_23
 
そうです! ここはオーストラリア!!

「Top Award 2014 in Australia-Gold Coast」 Part3 をご紹介致します。

補足:
 このブログで初めてTop Awardを知った方向けにご説明すると、
 Top Award とは当社で2012年から実施されている海外研修旅行です。
 昨年度、会社に大きな貢献をしたメンバーに贈られます。Top Award 2014ではオーストラリア、
 クイーンズランド州海沿いのリゾート地、ゴールドコーストに3泊5日で来ています。

 
申し遅れました。初 Top Award 参加の中川(晴)です。
(ちなみに海外旅行も初めてです。。)

本記事では、私が Top Award の研修後の自由時間で過ごしたひと時をご紹介します。
 
いろいろなことをしたのですが、本記事では2点ご紹介します。
1つは、私の夢だった海外の町をサイクリングしたこと、
もう1つは、恐怖すぎるけど最高!の『SKYPOINT CLIMB』ツアーです。
 

海外で颯爽とサイクリング

2日目の朝。この日は前日ディナー後のパーティーでお酒を飲みすぎたこともあり、
ホテルの朝ごはんもスルーして遅めに起床。
 
朝からサーファーズパラダイス街に出かけているメンバーと街で合流するため、
ホテルを1人で出発しました。
hn_topw2015_30
ちなみに宿泊先のシェラトンミラージュホテルの部屋はこんな感じ。
ほんと広くて綺麗!素晴らしいリゾートホテル
 
ホテルから合流地点のサーファーズパラダイス中心地へは徒歩4、50分の距離です。
さて、どうやって行きますか。。
 
ホテルの目の前からバスもでてますし、タクシーもホテルからすぐ呼べます。
数ある選択肢の中、選んだのは、
 
『レンタルサイクル』です!!
 


ホテル近くでレンタルサイクル店を見つけていたので、店に入ってみます。

hn_topw2015_252
 
メニューを見るとレンタル用の自転車は4種類あります。
 ・Beach Cruiser(ビーチクルーザ)
 ・Electric Bike(電動1人乗り自転車)
 ・Electric Tandem(電動2人乗り自転車)
 ・Moutain Bike(マウンテンバイク)

値段ですが、現地通貨はオーストラリアドルで当時は1Aドル=100円前後なので、
1DAYだと約3000円からです。

そして今回借りた自転車ですが、、

海岸沿いを走るといえば、『Beach Cruiser』ですよね!
hn_topw2015_01
 
お貸し頂いた自転車がけっこうかっこいい! テンション上がります。
 
「楽しんできなさい」と店員さん。 いってきます!!
 
街並を楽しみたく、ローカルな道を中心に快走します。
本当に最高です・・・海外の町並みなんて映画でしか見ていないので泣きそうに楽しい。
hn_topw2015_07

ゴールドコーストという街は無数に運河が流れており、羨ましいことに、
運河に自家用クルーズボートの船着場のあるウォーターフロント物件もよくみかけます。

歩道をみても芝生があったりと、高級住宅街だとわかりますね。。
一番高いのはやっぱり海沿いで、10億越えの物件も多いらしいですよ。
hn_topw2015_08

 
さて、朝ご飯食べてないのでお腹が減ってきました。
 
というか、この日の気温も30度近いので、ものすごい暑い。
(この日は2月末なので日本は冬ですが、オーストラリアは真夏です)
 
・・のどが渇いた
 
・・・とりあえず飲み物
 
・・・・持ってないし! オーマイガー!!!

 
 
さて、この辺にコンビニは・・と、日本感覚で冗談半分に探していたら、
…本当にあるんですね。それもセブンイレブン。買出しはここに決定。

hn_topw2015_05 hn_topw2015_04
 
今日の朝食はラップサンド。水分補給用にドリンク2本も購入し、合計1100円ぐらいです。
ラップサンドはフレッシュでなかなか美味しかったです。値段以外は満足!

補足:
 オーストラリアは物価は高く、コーラは約350円、水も約200~300円と、
 物によっては日本の2倍近い値段します。
 ただしオーストラリアは収入もその分高く、最低賃金は2014年7月時点で16.87 A$と、
 日本の2倍近くあるので、物価が高くても仕事さえあれば生活には困らないかもしれませんね。

 
さて、ゴールドコーストといえばやっぱり海! 食後、海を目指しました。
 
この日は、前日までの悪天候で波が荒かったため、海に入る人は少ないものの、海沿いで遊んでいる人をたくさん見かけました。ちょっと遠目でわかりづらいですが、海水は濁り気味。でも、普段海が落ち着いているときはもっと綺麗な色らしいです。
hn_topw2015_03 hn_topw2015_11
 
海岸線に沿って続く道は、さすがリゾート地、絶え間なく映画で見たような風景が広がります。
 
最高です。暑さも心地よいし、海を見ながらのコーラも美味しい。
 
この時間、一生忘れないと思います。
 
だいぶ寄り道しましたが、到着目標地点のQ1レジデンシャルタワー(街の中心街にあり、遠くからでもわかりやすいです)に到着。この後、他メンバーと街散策を堪能しました。
hn_topw2015_13
 
レンタルサイクルの感想ですが、タクシー等の乗り物で移動すると見逃してしまいそうな細かい街の魅力がよく観察できましたし、何より爽快で気持ち良かったです。結果的に、自分の視点で海外の文化を観察することもできたので本当に良かったと思っています。
 
以上がサイクリング編です。
 
 
 
さてさて、到着目標地点にしていたゴールドコーストの象徴「Q1レジデンシャルタワー」ですが、実はこの頂上に登れるツアーがあります。
hn_topw2015_13b
 
別日に行ってきましたので、2つ目はこれをご紹介します!
 

絶景!!『SKYPOINT CLIMB』ツアー

『SKYPOINT CLIMB』というツアーは、世界でも有数の高層建築を1つであるQ1レジデンシャルタワーの頂上へ、展望室から続く野外階段を使って登れるという内容です。
URL: http://www.skypoint.com.au/SkyPoint-Climb/
 
Re:Qからは3名で参加してきました。
 
# 実はジェットコースターも乗れないほど、高いところは怖いのですが、
# 新しい境地が見えてくるかなと思い(笑)、挑戦しました。

値段は約6000円くらい。
受付で申し込み後、受付の先にある小部屋で荷物をロッカーに入れ、安全面が考慮されたワイヤー着き作業着に着替えます。
 
その際、インストラクターさんから注意事項も含めた説明を受けます。
もちろん英語なので聞き取れない部分もあったのですが、インストラクターさんに手取り足取りで教えてもらえたので何とかなりました。

hn_topw2015_18 hn_topw2015_17
 
作業着のまま、エレベータで77階展望室まで向かいます。
この移動時間が決戦の場に向かうようで、すごくどきどきします。
 
心が落ち着く時間がほしいと思いながらも、77階展望室までは高速エレベーターであっという間に到着。非情!!
 
インストラクターさんと共に展望室にある専用入り口を通り屋上へ突入です。
ここからはカメラ持ち込みできないのでインストラクターさんがとった写真で頂上をご紹介。
 
ご覧ください、この絶景を!!!!
 
あまりに綺麗なので恐怖心を振り切って、楽しくなってます。
hn_topw2015_19
(注)ワイヤーがあるものの、30センチ後ろは280メートルの高さ
 
途中、インストラクターさんは、建物、自然、歴史など景色の説明もしてくれます。
ですが勿論英語なので、半分も聞き取れなかったと思います。
(この悔しさがきっかけで、日本に帰っても英語に興味を持ち始めました)
 
 
グループ写真もとってくれます。Re:Qの3名で撮りましたよ!
hn_topw2015_22
 
最高の思い出になりました。
 
 
最後に。
Top Award は、Re:Q が社員に「異なる文化や考え方に触れる機会を提供し、更なるステップアップのヒントを掴んでくる環境を提供してくれている」ことがわかる、カルチャーの1つと言えると思います。
Award 2014 関連記事や過去のTop Award 記事(技術ブログ下方の「Re:Qと~く」)も是非ご覧になって頂き、Re:Q に興味を持って頂くきっかけの1つとなりましたら幸いです。

Top Award 2014 ~Australia – Gold Coast Part3~

RHEL 6のジョブスケジューラ「anacron」とは Part1

◆ご紹介する内容

こんにちは、Re:Qの中川(晴)と申します。

今回「RHEL6におけるジョブスケジューラ "anacron"」についてご紹介致します。

RHEL5まではcronでの実行がメインだったOS デフォルトジョブも、
RHEL6からほとんどが anacron に切り替わっております。

ただ、従来のシステムで多用されてきたcronと比べ、
anacron はまだ馴染み深くない方もいらっしゃるかもしれません。

そこで、今一度、anacronとcronで混在してしまう点を整理し、2回に分けてご紹介致します。

今回のパート1では、

・cronとanacronの違い
・cronとanacronをどのように使い分けるべきか
・cronとanacronの関係性
・anacronのスケジュール実行フロー

について、なるべくわかり易くイメージ図も交えご紹介致します。
※なお、RHEL6のデフォルト設定をベースにご説明させて頂きます。
※anacronはRHEL7でも実装予定ですが仕様未確認のため本記事の対象外となります。

 

◆anacronとは

anacronとは、
 cronとともにRHELで標準実装されている、ジョブ(コマンドやプログラム等)を
 スケジュール実行する仕組み
です。
 (Windowsでいうタスクスケジューラのようなものです)

RHELではcron、anacronともに利用可能なわけですが、
従来利用されているcronと、今回ご紹介するanacronの大きな違いの1つは
「ジョブ実行時刻の指定」にあります。

●cronは、「ジョブ実行時刻を指定可能です。」
 逆に言うと、指定した時刻以外には絶対に起動しません。

一方

●anacronは、「正確なジョブ実行時刻を指定できません。」
 実行時間帯(例:3時~22時)は指定できますが、
 実行時刻はその時間帯の中でOS側でスケジューリングします。

 

◆cronとanacronの違いまとめ

cronとanacronの違いをもう少し詳細にまとめてみます。

[table id=27 /]

anacron-pika3

[脱線] なぜanacronのような曖昧なスケジューリングの仕組みが必要なのでしょうか。

共有ハードウェア上に、複数仮想OSを動かすのがスタンダードな今、
各OSが一斉にジョブ動作すると、その時刻にリソース負荷が集中してしまいます。

だからといって、OS毎にジョブ時刻を変える設計もサーバ数増加時は管理が大変です。
ランダムにはなりますが、各OSが「今日中のどこかでジョブをやっておくね!」というのも、
ジョブ種別によっては役に立ちます。

 

◆どのように使い分けるべきか

ジョブ実行タイミングの自動分散を必要としない場合、
 従来どおり cron を使って問題ないと考えます。

ジョブ実行タイミングの自動分散を必要とする場合についても、
 柔軟に細かいスケジュール条件が指定可能な cron に対し、
 anacron は不向きとなる条件は数多くありますのでご注意ください。
 

anacronに不向きなジョブ

●1日に複数回起動が必要

●正確な時刻指定が必要

●ジョブ間で実行順序に前後関係がある

●システム管理ユーザ以外がスケジュール登録利用する

 

◆anacronスケジュール実行フロー

anacronは常駐プロセスではありません。
ではanacronはどのようにプロセス起動しスケジュール実行しているのでしょうか。

実はanacronは、cronから1時間に1回プロセス起動されています。
 

▼スケジュール実行フローをイメージ図にしてみます。

anacron-01

 

▼イメージ図を、フローで簡単にご説明します。

①[cron]:hourlyスケジュール実行

 cronが、hourlyスケジュールジョブ(1時間に1回、毎時1分起動)として、
 /etc/cron.hourlyディレクトリ配下のスクリプトを実行します。
 

●関係するのはこの設定ファイル
 /etc/cron.d/0hourly
[table id=30 /]

  ↓
②[script]:anacron起動スクリプト実行

 ①により、cronが/etc/cron.hourly/0anacron スクリプトを実行したことで
 anacronが起動します。
 (=hourlyスケジュールのため1時間に1回起動ということになります)
 

●関係するのはこのスクリプト
 /etc/cron.hourly/0anacron

[table id=31 /]

  ↓
③[anacron]:anacronジョブスケジュール設定を読み込み

 起動したanacronプロセスは、anacron設定ファイル(/etc/anacrontab)より、
 ジョブのスケジュール設定を読み込みます。

 「ジョブスケジュール設定(何日おきに実行するかで指定)」と、
 「④で実施する"ジョブの前回実行履歴"」をふまえ
 
 [本日スケジューリングされている] かつ [本日未実施] のジョブを抽出します。
 

●関係するのはこの設定ファイル
 /etc/anacrontab

 ※設定方法などは、次回のパート2の記事でご紹介する予定です。
[table id=29 /]

  ↓
④[anacron]:各ジョブの前回実行履歴を読み込み

 当日既に実施済みのジョブか否かを、前回ジョブ実施日が記録された
 /var/spool/anacron/[ジョブ名] ファイルより確認します。

 ※本ファイルは、anacronに登録したジョブ別にファイル生成されています。
  例:cron.dailyジョブ → /var/spool/anacron/cron.dailyファイル

 ※本ファイルに記録されたジョブ履歴は、1世代(前回実行日のみ)で、
  YYYYMMDD形式(例:20140421)で記録されております。
  時間までは記録はされておりません
 

●関係するのはこの設定ファイル
 /var/spool/anacron/[ジョブ名]

[table id=32 /]

  ↓
⑤[anacron]:ジョブスケジューリング

④、⑤により抽出された本日実施が必要なジョブは、
前述のとおりOS依存でランダムにてジョブ実行時刻が決定されます。
仕組みの概略は以下になります。

● ジョブ実行時刻はどう決まるか

 anacron起動後、ランダムで決定した「遅延時間」を待機後にジョブ実行します。

 例として、3時にanacronが起動し、ランダム決定した遅延時間が計30分であれば、
 3時30分がジョブ実行スケジュールとなります。

 

● 「遅延時間」とは何か

 /etc/anacrontab内の設定値に基づき以下のように決定します。

 「遅延時間」=共通設定にてランダム決定した遅延時間+
         ジョブ個別設定にてランダム決定した遅延時間

 ※"ランダム決定"の意味
  設定で最大値のみを指定し、最大値以内にてOS側が乱数決定する仕組みを指します。
  (よって遅延時間の範囲自体は制御可能です)

 ※"共通設定"のイメージ
  ジョブAの遅延設定=共通設定+ジョブA個別の設定
  ジョブBの遅延設定=共通設定+ジョブB個別の設定

 ※/etc/anacrontab内の設定項目
  ・共通設定: RANDOM_DELAY(設定ファイルに1つ定義)
  ・ジョブ個別の遅延時間: delay in minutes(ジョブ別に定義)


 例:
  ジョブ共通のRANDOM_DELAY値を45(分)、
  ジョブAのdelay in minutes値を20(分)と設定した結果、
  ある日のジョブAの遅延時間は、ランダムで40分+13分=53分となった。
  次の日は10分+19分=29分となった。

 

● その他条件

 /etc/anacrontab内の設定にて「ジョブ実行可能な時間帯」を定義しています
 (START_HOURS_RANGE設定値)

 そのため、ランダム決定で算出した時刻が、設定時間帯内に納まっていない場合は
 今回のanacron起動では実行されません。

 終日実行されないというわけではなく、anacronは1時間に1回起動されますので、
 1時間後の次回anacron起動時以降に後ろ倒しするという流れです。

 また、anacronはジョブの輻輳を嫌うため、
 登録しておいたジョブの時間帯が重ならないように自動制御も行われます。
 

Part1は以上です。
次回のPart2では、anacronの具体的な設定方法、設定上の注意点等をご紹介する予定です。

ご参考頂けたら幸いです。ありがとうございました。

RHEL 6のジョブスケジューラ「anacron」とは Part1

Apache : リバースプロキシサーバ構築について

こんにちは、Re:Qの中川(晴)と申します。

「Apacheによるリバースプロキシサーバ構築」をテーマにお話しさせて頂きます。

まず執筆にあたっての想いです。

「ネットワークは専用ハードウェア機器で構成する」
これは実績があり「当たり前」と言われてきたソリューションです。

ネットワークに限りませんが、こうした「当たり前」はシステム構成検討の上で、
時として「前提条件として構成決定」されてしまうことがあります。
お客様に安心して無難に提供できる面もあるからです。

ただし、お客様から見ると「高額なハードウェア購入/保守費が必要」という点は、
必ずしも最適なソリューションではない場合もあるのではないでしょうか。

近年、OSS、仮想化などの技術進歩により、要件によっては、
同等機能をよりコストを抑え実現可能な選択肢が増えてきています。

私たちはエンジニアは「当たり前」という固定概念にとらわれない柔軟性をもち、
よりお客様が喜ぶソリューションを追及することが、大切な使命であると考えます。

このような想いもあり、ハードウェアに依存しないソリューションに関連した記事を執筆致します。
では長くなりましたが、本題に入らせて頂きます。

まず簡単に"リバースプロキシとは" から始め、
次にご紹介する設定例の構成、ポイントと続き、最後に設定ファイル例をご紹介致します。
 
**************************************
◆リバースプロキシとは
**************************************

リバースプロキシは、クライアントからのリクエストを代理で受け中継するプロキシの1つです。
通常のプロキシ(以降フォワードプロキシと記載)との違いは以下のとおりです。

▼フォワードプロキシは、
「クライアント側の拠点」に設置され、
「不特定多数のサイト宛」のリクエストを中継します。

一言でいうと「クライアント側のリクエスト要求代理」のイメージです。

(オフィスからインターネットする際にブラウザで設定するプロキシはこちらです)

一方、

▼リバースプロキシは、
「アクセス先WEBサイト側の拠点」に設置され、
「バックエンドの特定サーバ宛」のリクエストを中継します。

一言でいうと、フォワードプロキシとは逆で、
「WEBサイト側のリクエスト受付代理」のイメージです。

クライアントからのアクセス先窓口は、リバースプロキシ宛になりますので、
実際にコンテンツを返すWEBサーバにはクライアントから直接アクセスしません

このことから、システム構成にもよりますが、
セキュリティ性やバックエンドサーバの負荷軽減等のために、主に利用する機能となります。

 
**************************************
◆ご紹介する構成イメージ
**************************************

そのリバースプロキシサーバを、ミドルウェア「Apache」で構築する際の設定ですが、

要件として、単純に「ユーザリクエストを中継し特定のWEBサーバに受け流す」だけならば、
ごくシンプルに数ラインのApache設定で実装されますが、

今回はリバースプロキシサーバ要件として以下も取り込み構成をしてみたいと思います。

▼今回取り込むリバースプロキシサーバ要件:
 
①負荷分散したい
(バックエンドに複数台WEBサーバがあり、リクエストを負荷分散したい)

②Sticky Sessionが必要
(毎回違うWEBサーバにアクセスするともちろんセッションが切れてしまうため、
セッション確立後、同一セッションは毎回同じWEBサーバにアクセスさせたい)

③WEBサーバ不通時はSorryページに飛ばしたい
(現在通信できない旨をブラウザのエラーメッセージではなく任意WEBページで表示する)

トラフィック量に応じて、ロードバランサ構築など最適な実現方法はあると思いますが、
今回はApache内で完結したい場合を例に示します。

構成イメージは以下図になります。

 
**************************************
◆設定のポイント
**************************************
ポイントは、上記要件②の「Sticky Sessionをどう実現するか」です。

今回はWEBサーバ側設定(JSESSIONIDをキーとする等)に依存せずとも動作するように、
apacheのmod_proxyモジュールで定義された以下環境変数を利用し実現します。

<変数>
BALANCER_WORKER_ROUTE・・・当該セッションの振り分け先(下記設定例④~⑤のroute値)
BALANCER_ROUTE_CHANGED・・・新規リクエストの場合に値に1が入る。(厳密にはSESSION ROUTEとWORKER ROUTEが一致しない場合)

本実現方法は、パッケージ製品を利用しており保守上できる限り設定を変えたくない等、
WEBサーバ側の設定変更が難しいケースに特に有効です。

▼その他注意点
・リバースプロキシとして使用する場合は、ProxyRequestsディレクティブは必ずOFFにします。
Onとするとフォワードプロキシとなり、逆に踏み台となり、システムに潜入される恐れがあります。

・転送先のWEBサーバアドレスですが、WEBサーバがレスポンスするLocationヘッダに合わせ
指定しないと、ブラウザにレスポンスする際にリバースプロキシサーバから返却されたように
見せるヘッダ書き換えが有効とならない場合があります。
(つまり、ユーザは次リクエスト時にバックエンド宛にアクセスを試みてしまいます)

 
**************************************
◆httpd.conf設定例(抜粋)
**************************************

Apache設定(httpd.conf)の内、ポイント部を抜粋し以下に設定例を記載致します。

--------------------------------------------------------------------------------
ProxyRequests Off

//今回は特段アクセス制限は設けておりません
<Proxy *>
Order deny,allow
Allow from all
</Proxy>

Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED・・・①Cookie設定

ProxyPass / balancer://webap/ lbmethod=byrequests stickysession=ROUTEID・・・②プロキシ設定
ProxyPassReverse / balancer://websv/・・・③リバースプロキシ設定

<Proxy balancer://websv/>
BalancerMember http://webserver1/ loadfactor=10 route=web01・・・④振り分け先のWEBサーバ1
BalancerMember http://webserver2/ loadfactor=10 route=web02・・・⑤振り分け先のWEBサーバ2
#SorryServer
BalancerMember http://sorryserver1/ loadfactor=10 status=+H ・・・⑥Sorryサーバも設定できます。
</Proxy>
--------------------------------------------------------------------------------

 
**************************************
◆設定例の説明
**************************************
簡単な箇条書きになりますが設定例について補足説明します。
注)私の個人解釈も含まれておりapacheの厳密な内部フローとは異なる場合があります

1) 新規リクエストがきた際、
初回振り分け先を、設定例②のlbmethod=byrequests(リクエスト回数判断)で決定します。

※参考になりますが、lbmethod(分散方法)は他にbytraffic(=転送byte量)、bybusynes(=空きworker優先)があります。

2) 振り分け先にリクエストを受け流します(設定例④~⑤。不通時は⑥)

3) 新規リクエストの場合は、
設定例①で、CookieにBALANCER_WORKER_ROUTE(変数ROUTEID)を書いておきます。

4) 同一セッションで再度リクエストがきた際、
CookieのBALANCER_WORKER_ROUTE(変数ROUTEID)を参照し同一のrouteに振り分けます。

 
**************************************
◆参考
**************************************
・Apache モジュール mod_proxy_balancer
http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html

 

ご紹介は以上となります。参考にして頂けたら幸いです。
ありがとうございました。

Apache : リバースプロキシサーバ構築について
資料請求・お問い合わせはこちら

▲ ページトップに戻る

技術ブログ

2023年8月
« 7月  
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
採用に関するお問い合わせはこちら