「NAT環境にいるCloudStack管理GUIでWebコンソールへのアクセスを可能にする」
補欠だったのですが急遽参加する事になったCloudStack Advent Calendar(http://atnd.org/events/34309)
人身事故で家に帰れなくなった僕がこれから12/07分を書くよ\(^o^)/
内容は「NAT環境にいるCloudStack管理GUIでWebコンソールへのアクセスを可能にする」です。
内容は「NAT環境にいるCloudStack管理GUIでWebコンソールへのアクセスを可能にする」です。
みなさんCloudStack 4.0(http://incubator.apache.org/cloudstack/)を動かしてますか?
僕は検証の時間がやっと作れたので環境を構築しています。
環境としては以下
- CloudStack環境は独立したネットワークに閉じ込める(10.10.0.0/16のBasic Network環境)
-
CloudStack環境へのアクセスには境界ルータを用いる( IIJ製SEIL)
-
Management WebUIには、境界ルータのNAT/NAPT機能を用いてアクセスする(SEILのNAT機能)
ということで
「NAT環境にいるCloudStack管理GUIでWebコンソールへのアクセスを可能にする」
を目的に話しを進めたいと思います。
環境イメージ
問題点
解決策
「ReverseProxyを間に挟む」
ReverseProxy環境イメージ
ReverseProxy設定
- CentOS 環境なので、yum install httpdとかはapacheを入れる
- /etc/httpd/conf.d/rproxy.confとかに以下を記述
- 10.10.0.10
- cloud-gate.hogefuga.jp
- 10.10.0.151
Listen 10.10.0.10:8888 <virtualhost 10.10.0.10:8888=""> ServerName 10.10.0.10 ErrorLog logs/ssl_error_log Customlog logs/ssl_access_log combined ProxyPass /client http://10.10.0.10:8080/client <- 10.10.0.10:8888/clientへのアクセスを8080へと飛ばす ProxyPassReverse /client http://10.10.0.10:8080/client SSLProxyEngine On <- ConsoleProxyへのアクセスがhttpsの為にSSLProxyEngineをonする SSLProtocol all -SSLv2 ProxyPass /ajaximg https://10.10.0.151/ajaximg ProxyPassReverse /ajaximg https://10.10.0.151/ajaximg ProxyPass /resource https://10.10.0.151/resource ProxyPassReverse /resource https://10.10.0.151/resource ProxyPass /ajax https://10.10.0.151/ajax ProxyPassReverse /ajax https://10.10.0.151/ajax ExtFilterDefine console_proxy mode=output cmd="/bin/sed -e 's,https://10-10-0-151.realhostip.com/,http://cloudstack-gate.hogefuga.jp:8888/,g'" <- 表示されるHTMLを無理矢理書き換えるフィルタ <location> AddOutputFilterByType console_proxy text/html </location> </virtualhost>
NATの設定
SEILの設定に以下を追加
# nat snapt add protocol tcp listen 8888-8888 forward 10.10.0.10 8888-8888 enable interface lan1
設定の結果
http://cloud-gate.hogefuga.jp:8888へとアクセスするとManagementサーバのReverseProxyへとアクセスし、
さらに8080ポートへと通信が転送され、管理WebUIへとアクセスができます。
「ReverseProxyの設定」と「NATの設定」でNAT環境かのホストに対するWebコンソールがつかめました。
過去のMLの内容などをみると、VPN張ればいいじゃんとか言う案もある様ですが、それはそれは敷居が高いので今回は割愛。
ApacheのReverseProxy設定なので、敷居は下がるのじゃないかと思う次第。
ちなみに参考にさせていただいたのはこちら