More Related Content Similar to Azure of the_weekend_hobby (20) More from Namba Kazuo (7) Azure of the_weekend_hobby8. 便利そうなオンラインストレージないかな。
• OwnCloud が便利そう
• LDAP や Active Directory と連携できる
• SAML/Shibboleth認証への対応
• 色々なストレージサービスとの連携機能が搭載
• NFSストレージ、iSCSIストレージ、FTPサーバー、Windows共有
フォルダや、Amazon S3、Dropbox、Google Drive等
11. 検証環境がほしいな
• 自宅の環境だと。。
• Mac Pro Early2006 のHyper-V Server 2012 r2
• ちょっとパワー不足(メモリ4GBしかない)
• 休憩時間などの隙間時間も活用したい
• 自宅に固定IP IPSec接続 を用意すると家庭内稟議が、、
13. Azure で Linux を使ってみよう!
•Windows系 Iaas 環境を既に使っているし
運用 know-how をもっと貯めたい
•国内リージョンにDR構成でデータ保存できる
•サイト間接続(S2S)だけでなく
P2S(Point to Site)接続も可能
14. なんで Azure をつかうの?
Azure Active Directory
Domain Servicesプレビュー開始!
管理マスターを握った
ADDSが止まったらどうしよう。。
そんな不安から解放されるのかな?
16. なんで Azure で Linux をつかうの?
•de:code 2015 で Linux への本気度を感じた
講師の方がこんな感じのシャツを着てたような
20. システム構成
• 認証関連
• Azure AD Domain Services
• 東アジアリージョン(香港)
• オンラインストレージ
• ownCloudを使います
• 共有フォルダに「Azure File ストレージ」をマウント
• 「Azure AD Domain Services」でユーザ認証
24. Azure Active Directory Domain Services
(Azure ADドメインサービス)
• Azure AD に作成したディレクトリで
ADDSの一部機能を使える
– Kerberos、NTLM、LDAP認証プロトコル
– Windows統合認証
– グループポリシー
28. • Azure AD に「AAD DC Administrators」グループを作成
Azure Active Directory Domain Services
29. • Azure AD に「AAD DC Administrators」グループを作成
Azure Active Directory Domain Services
30. • Azure AD に「AAD DC Administrators」グループを作成
Azure Active Directory Domain Services
31. • 「AAD DC Administrators」グループに管理者ユーザを追加
Azure Active Directory Domain Services
32. • 「AAD DC Administrators」グループに管理者ユーザを追加
Azure Active Directory Domain Services
33. • 「AAD DC Administrators」グループに管理者ユーザを追加
Azure Active Directory Domain Services
34. • 「AAD DC Administrators」グループに管理者ユーザを追加
Azure Active Directory Domain Services
35. • 「AAD DC Administrators」グループに管理者ユーザを追加
Azure Active Directory Domain Services
36. • 「Azure AD」と「Azure AD ドメインサービス」でユーザ同期
– 「http://myapps.microsoft.com」へアクセス
– 作成したユーザのパスワードを変更すると同期されます
Azure Active Directory Domain Services
37. • 「Azure AD」と「Azure AD ドメインサービス」でユーザ同期
– 「http://myapps.microsoft.com」へアクセス
– 作成したユーザのパスワードを変更
一時パスワードで
ログイン
Azure Active Directory Domain Services
38. • 「Azure AD」と「Azure AD ドメインサービス」でユーザ同期
– 「http://myapps.microsoft.com」へアクセス
– 作成したユーザのパスワードを変更
パスワードを変更
して同期
Azure Active Directory Domain Services
39. • Azure ADでパスワードを変更後、数分で同期
Azure Active Directory Domain Services
> Get-ADUser -Filter {SamAccountName -eq "oc8-easia-admin"}
DistinguishedName : CN=oc8-easia-admin,OU=AADDS
Users,DC=your,DC=domain,DC=net
Enabled : True
GivenName : oc8-easia
Name : oc8-easia-admin
ObjectClass : user
ObjectGUID : 05662ca3-b7fb-4d67-808e-2dbf6da51592
SamAccountName : oc8-easia-admin
SID : S-1-5-21-1119254716-991656386-791295664-2602
Surname : admin
このDN 後でつかいます
41. Azure File Storage
(Azure ファイルストレージ)
• ファイル共有機能を提供するサービス
– SMB 2.1およびSMB 3.0プロトコルに対応
– 同一リージョンからはSMB 2.1・SMB 3.0 で接続可能
– 別リージョンやオンプレミスからは SMB 3.0 で接続可能
45. Azure File Storage
• ストレージアカウントを作成
作成した共有ファイルは
「ストレージアカウント名.
file.core.windows.nethogehoge」
で接続可能
接続認証は発行されたアクセスキーを利用
49. コンテナホストの構成
• ストレージドライバ を overlayfs に変更
– /etc/sysconfig/docker
#OPTIONS='--selinux-enabled'
OPTIONS='--selinux-enabled -s overlay'
• overlayfs は SELinux に未対応なので。。
# sed -i 's/SELINUX=enforcing/SELINUX=permissive/'
/etc/selinux/config
# systemctl reboot
50. • コンテナでSystemdを利用する際に苦労したところ
– CMD で /sbin/init を実行しなくてはいけない
– Docker run 実行時の env 設定は読み込んでくれない
– コンテナイメージにクレデンシャル情報を含めたくない
– create db するunitは初回起動時に1回だけの実行にしたい
コンテナの構成
52. DBコンテナの構成
• 使用OSイメージ
• CentOS 7.1 Latest
• Postgresql 9.4
●
PITR (Point In Time Recovery) 用ディレクトリに
「Azure File Storage」をマウント (データ永続化)
File Storage は ローカル冗長(Standard-LRS)
• コンテナ内プロセスはsystemdで制御
56. DBコンテナの構成
• Postgresql9.4のインストール
# rpm -ivh http://yum.postgresql.org/9.4/redhat/rhel-
7-x86_64/pgdg-centos94-9.4-2.noarch.rpm
# yum -y install postgresql94-server postgresql94
postgresql94-contrib
• Postgresql リポジトリ追加
• Postgresql インストール
57. •Azure File Storage をマウントするための
認証情報を取得するUnitファイルを作成してみよう
– Unit名:azfenv.service
●
実行スクリプト:azfenv.sh
DBコンテナの構成
58. DBコンテナの構成
[Unit]
Description = Setting Azure File Storage Credential
After=network.target
Before=remote-fs.target mnt-pgsql.mount
[Service]
Type = oneshot
ExecStart=/usr/local/sbin/azfenv.sh
[Install]
WantedBy = multi-user.target
• azfenv.service マウント認証情報の取得 Unitファイル
60. •Azure File Storage をマウントするための
Unitファイルを作成してみよう
– Unit名:mnt-pgsql.mount
azfenv.service で作成した
認証情報を読み込みます
– 認証情報ファイル:/etc/sysconfig/azfile_env
DBコンテナの構成
62. •Azure File Storage をマウントしたディレクトリに
PITR(Point In Time Recovery)の設定をしてみよう
– 編集するファイル
●
postgresql.conf(WALアーカイブの設定)
●
pg_hba.conf (レプリケーションアクセス設定)
DBコンテナの構成
63. DBコンテナの構成
変更箇所
#wal_level = minimal → wal_level = archive
#archive_mode = off → archive_mode = on
#archive_command = '' → archive_command =
'' cp %p /mnt/pgsql/archive/%f' ''
#max_wal_senders = 0 → max_wal_senders = 3
• マウントしたストレージ に WALアーカイブを保存
(postgresql.confを編集)
64. DBコンテナの構成
# "local" is for Unix domain socket connections only
local all postgres trust
local replication postgres peer ← 追記
#local all postgres peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
host all postgres 0.0.0.0/0 reject
• レプリケーションアクセス設定(pg_hba.confを編集)
65. DBコンテナの構成
# ls -l /mnt/pgsql/archive/
total 32768
-rw-------. 1 postgres postgres 16777216 Feb 17 06:47 000000010000000000000004
-rw-------. 1 postgres postgres 16777216 Feb 17 13:51 000000010000000000000005
• PITR(Point In Time Recovery)設定
– マウントしたストレージ に WALアーカイブが保存されます
68. DBコンテナの構成
#!/bin/bash -eu
/usr/bin/pg_basebackup -D /mnt/pgsql/backup
/bin/mv /mnt/pgsql/backup/ /mnt/pgsql/backup`date +%Y
%m%d`
/usr/bin/find /mnt/pgsql/archive/ -type f
-mtime +3 -exec rm -f {} ;
/usr/bin/find /mnt/pgsql/* -maxdepth 0 -type d
-mtime +3 ! -name archive -exec rm -rf {} ;
• (PITR実行スクリプト )
72. DBコンテナの構成
• DBロールとデータベース作成Unitファイル(createdb.service)
[Unit]
Description = Create DB Servece
After=postgresql-9.4.service syslog.target network.target auditd.service
[Service]
Type = oneshot
EnvironmentFile=/etc/sysconfig/postgres_env
ExecStartPre=/usr/local/sbin/postgres_env.sh
ExecStart=/usr/local/sbin/create_db.sh
ExecStartPost=/usr/local/sbin/stop_createdb.sh
[Install]
WantedBy = multi-user.target
74. DBコンテナの構成
#!/bin/bash -eu
psql -U postgres --command "CREATE USER ${DB_USER} WITH
CREATEDB PASSWORD '${DB_PASS}';"
psql -U postgres --command "CREATE DATABASE ${DB_NAME}
OWNER ${DB_USER} TEMPLATE template0;"
mkdir /mnt/pgsql/archive
• create_db.sh (ExecStart:ロール・DB作成 スクリプト)
76. DBコンテナの構成
• Postgresql Unitファイル設定
– 標準のUnitファイルをinclude して、変更点を記載する
# vi /etc/systemd/system/postgresql-9.4.service
----
.include /lib/systemd/system/postgresql-9.4.service
[Unit]
Description=PostgreSQL 9.4 database server
RequiresMountsFor=/mnt/pgsql
77. DBコンテナの構成
• postgresql 起動
# systemctl start postgresql-9.4
# docker run -i -t -d --name=pgsql94
--privileged -p 5432:5432 pgsql94:0.1.5
• systemdを使用するので
今回コンテナは特権モード(privileged)で起動
84. •Azure Active Directory Domain Services と連携
APコンテナの構成
AADDS のIPアドレス
ユーザーのDistinguishedName
ユーザーのAADDS パスワード
「ベースDN を検出を」クリック
86. •Azure Active Directory Domain Services と連携
APコンテナの構成
「その他の属性」から
「sAMAccountName」を選択
この設定で「SAMアカウント名」で
ログインが可能になります
90. • 共有フォルダ に Azure File Storage をマウント
「ファイル」 から
「アプリ」 を選択
APコンテナの構成
91. • 共有フォルダ に Azure File Storage をマウント
– External storage support を有効化
APコンテナの構成
92. • 共有フォルダ に Azure File Storage をマウント
– External storage support を設定
APコンテナの構成
「SMB/CIFS」でAzure File
Storage が設定できなかったので
コンテナにマウントして「ローカル」
ディレクトリとして指定
93. • 共有フォルダ に Azure File Storage をマウント
– “You don’t have permissions to upload files here”の対策
APコンテナの構成
# usermod -s /bin/bash apache
# su - apache -c 'php /var/www/html/owncloud/console.php files:scan --all'
# usermod -s /sbin/nologin apache
外部ストレージとして「ローカル」を
指定するとこのエラーが出るみたい
94. • 共有フォルダ に Azure File Storage をマウント
– 設定した共有フォルダが 利用可能な状態で表示される
APコンテナの構成
95. • 共有フォルダ に Azure File Storage をマウント
– Azure AD に設定した「ユーザー」や「グループ」を利用可能
APコンテナの構成