2022/07/01

Alibaba Cloud の Region 増えてた

 久々に Alibaba Cloud を覗いてみたら・・・

Alibaba Cloud リージョン


あ、なんかリージョン増えてるわ


昨年発表していたフィリピン(マニラ)リージョン、タイ(バンコク)リージョン、韓国(ソウル)リージョン が増えていたのでちょっと現状確認してみました。

フィリピン(マニラ)リージョンの場合、こんな感じですね。

ALBがまだ利用できないようです。

Alibaba Cloud フィリピンリージョン

タイ(バンコク)リージョンの場合はIPv6がまだ使えないようですね。

フィリピン(マニラ)リージョン同様にALBがまだ利用できないようです。

Alibaba Cloud タイリージョン

韓国(ソウル)リージョンはタイ(バンコク)リージョンと同様にIPv6とALBがまだ使えないようですね。

Alibaba Cloud 韓国リージョン

中国本土のリージョンとゾーンは以下

RegionCityRegion IDNumber of zones
China (Qingdao)Qingdaocn-qingdao2
China (Beijing)Beijingcn-beijing12
China (Zhangjiakou)Zhangjiakoucn-zhangjiakou3
China (Hohhot)Hohhotcn-huhehaote2
China (Ulanqab)Ulanqabcn-wulanchabu3
China (Hangzhou)Hangzhoucn-hangzhou8
China (Shanghai)Shanghaicn-shanghai11
China (Shenzhen)Shenzhencn-shenzhen6
China (Heyuan)Heyuancn-heyuan2
China (Guangzhou)Guangzhoucn-guangzhou2
China (Chengdu)Chengducn-chengdu2
China (Nanjing)Nanjing(China (Nanjing) is one of the local regions and is in invitational preview.)cn-nanjing1
   54

中国本土以外の国際リージョンは以下

CountryCityRegion IDNumber of zones
ChinaChina (Hong Kong)cn-hongkong3
SingaporeSingapore (Singapore)ap-southeast-13
AustraliaAustralia (Sydney)ap-southeast-22
MalaysiaMalaysia (Kuala Lumpur)ap-southeast-32
IndonesiaIndonesia (Jakarta)ap-southeast-53
PhilippinesPhilippines (Manila)ap-southeast-61
ThailandThailand (Bangkok)ap-southeast-71
IndiaIndia (Mumbai)ap-south-12
JapanJapan (Tokyo)ap-northeast-12
South KoreaSouth Korea (Seoul)ap-northeast-21
USUS (Silicon Valley)us-west-12
USUS (Virginia)us-east-12
GermanyGermany (Frankfurt)eu-central-12
UKUK (London)eu-west-12
UAEUAE (Dubai)me-east-11
   29

正式情報はコチラをご覧ください
Regions and zones

軽く見てみただけですが、3リージョンとも少し制約があるのはまだ Availability Zone が一つだからでしょうか?
今後、リソース増強されるとまた変わってくるのでしょうね。

中国本土は相変わらず強いですが、中国以外のリージョンも増えてきましたね。

2022/02/01

Azure AD のカスタムドメインに Cloudflare Registrar 管理のドメインを設定する

 Microsoft Azure を有効化すると、Azure AD のテナントに 「domainname.onmicrosoft.com」の様な一意のサブドメインが割り振られます。

Azure アカウントを作成する - Learn

個人アカウントを使って Azure を有効化した場合など、テナントのドメイン名に自分のメールアドレス情報を使ってしまったり、後々ちょっと困ることがあります。

Azure AD の初期ドメインは変更ができないので、変えたい場合はテナントごと作り直すか、カスタムドメインを使用する必要があります。

また、「onmicrosoft.com」のサブドメインとなるので企業で利用する際には、独自ドメインを利用したいという場合も多いと思います。

今回は Cloudflare Registrar で管理している個人ドメインを既存 Azure AD のカスタムドメインとして設定しました。


Azure Portal にログインして「Azure Active Directory」を選択します。


Azure AD 選択

Azure Active Directory の左の領域から「カスタム ドメイン名」を選択します。

Azure AD カスタムドメイン名

「カスタム ドメインの追加」を選択します。

カスタムドメインの追加

自身の所有しているドメインをカスタム ドメイン名を入力し「ドメインの追加」を選択します。

独自のドメインの追加


ドメインレジストラ側で設定する内容が表示されました。
以下の内容をレジストラに登録する必要があります。


Azure AD TXTレコード


今回使ったドメインは Cloudflare で管理しているので、そちらに先ほどのTXTレコードの情報を登録していきます。


Cloudflare DNS TXTレコード


保存に成功するとこのような表示がされます。


Cloudflare DNS レコード追加


情報の登録に成功していれば、Azure AD側の確認で「確認済み」と表示されます。


Azure AD カスタムドメイン追加の確認


追加したカスタムドメインを選択すると「プライマリにする」ボタンが有効化されているので選択します。


Azure AD カスタムドメイン プライマリ化


確認画面が出るので「はい」を選択します。


image


これでプライマリドメインが変更されました。


Azure AD プライマリドメインの確認

2022/01/29

Alienware 届いた

 

1月11日に注文した DellのPCが無事に届きました。


















2月5日到着予定だったものが1月25日に届きました。

出荷までがスムーズにいったのかな10日ほど前倒しで、注文から2週間で届いたのでビックリしました。


しかし・・・届いた箱が思ったより大きかったですね。

 







2022/01/11

Dell の Alienware Aurora デスクトップが欲しい

Dell の ゲーミングPC Alienware Aurora デスクトップを買うか悩ましい。

そろそろパソコンを買い換えようかと考えていたのですが、ノートにする必要もないしデスクトップにしてしまおうかなーと、軽く考えたところまでは良かったものの・・・

3D関連とか動画編集とかもやりたいので、折角ならゲーミングPCを買ってしまおう!

とか思ってしまったために年末年始でイロイロ睨めっこしていました。

実は最初は国内系のBTOをイロイロ見ていたのですが、値段と保証期間などを考えてHP OMEN 、Lenovo Legion 、Dell Alienware で如何しようか唸る日々。


HPのOMENは 25L と 30L が年末に販売終了してしまったので候補からはずれました。実はAmazonやPayPayモールでは1月まで売っていたのですが、OMEN 45L の発表に悩んでるうちに売り切れてました・・・😅

Lenovo はセール対象品だとちょっと欲しいスペックにマッチしない(カスタマイズできない)タイプだったので断念

結果的に今も使ってる Dell の中で買おうと決めました。
Dell はカスタマイズできる範囲がそれなりに多く、カスタムしてもセール価格になるのありがたい。


Dell のなかでは XPSも比較して見ていたのですが、拡張性や値段あとデザインで Alienware Aurora に決まりました。

何パターンもカートに入れてみて唸ってましたw


Alienware Aurora に決まったあとも実は悩むところが多く笑いました。

Alienware Aurora の中でも Intel モデル (R13)と AMD Ryzen モデル (R10, R14)でタイプが異なるのと、旧モデル (R10) と新モデルAurora (R13 / R14) の違いがあって、ここでも1日唸っていましたw


Alienware Aurora Ryzen Edition R10


Alienware Aurora R13

  

Alienware Aurora Ryzen Edition R14


 

5年保証も付けてカスタムもする予定です。
メモリスロットが4つあるのもうれしいですね。
仕様はこの辺をご確認ください。
ALIENWARE AURORA RYZEN™ EDITION R14 ゲーミングデスクトップ

いろいろ悩んでいるとどんどんカスタムの金額が上がっていくのも怖いところですね。

各社が年末年始セールもやっていたので、そこも悩ましいポイントでしたね。

さて・・・そろそろ、ポチるかなぁ

デル株式会社

2021/05/17

[備忘録] CentOS 7 に Apache Guacamole 1.3.0 をインストールする ~ その3

前回のその2に続いて「その3」になります。



今回は 
guacamole-client の情報を保存するための拡張オプションとDBの設定部分を実施していきます。

環境は Alibaba Cloud の RDS で MySQL 8.0 を使いました。
ECS、SLB と合わせた構成はこんな感じです。

guacamole 構成図

ちなみに、公式にサポートをしている DB は MariaDB, MySQL, PostgreSQL, SQL Server のようです。

ApsaraDB for RDS の作成

DB はもちろんサーバーにインストールしてもいいのですが、めんどくさい 利便性を考えてマネージドサービスを使います。Alibaba Cloud の マネージドデータベースはいくつか種類がありますが、今回は基本の RDS を使用します。

Alibaba Cloud の管理コンソールから「ApsaraDB for RDS」のページへ遷移して「Create Instance」を選択します。

Alibaba Cloud RDS コンソール

インスタンスの基本設定画面が表示されるので、リージョンやDBエンジンのバージョンやインスタンスタイプ、ストレージサイズなどを選択して「Next: Instance Configuration」を選択します。
今回は最小構成でいきます。

Alibaba Cloud RDS 作成基本画面

Instance Configuration のページで配置するVPCやパラメータテンプレート、タイムゾーンなどを設定し「Next: Confirm Order」を選択します。
今回はVPC以外は基本デフォルトで問題ないかなと思います。

Alibaba Cloud RDS 作成パラメータ

内容に問題がなければ「Terms of Service」にチェックを入れて、「Pay Now」を選択します。
・・・どうでも良いことなのですが、プロダクトによって「Buy Now」のときと「Pay Now」のときがあるんですねー

Alibaba Cloud RDS 購入画面

ApsaraDB for RDS の設定

「ApsaraDB for RDS」の一覧ページへ戻り、インスタンスが作成状態になったことが確認できます。

Alibaba Cloud RDS コンソール

少しするとインスタンスの初期化処理が終わり設定が出来るようになります。
「Manage」を選択してインスタンスの設定を行います。

この時は2分くらいでした。画面のリロードはしないと更新されない気がします。

Alibaba Cloud RDS コンソール

設定画面に入るとこのような画面が表示されます。
インスタンスの名称がIDでわかりにくいので適当な名前をつけて行きたいと思います

Alibaba Cloud RDS 基本画面 名称変更

こんな感じで任意の名前に変えることが出来ます。日本語も大丈夫です。

Alibaba Cloud RDS 基本画面

DBアカウントの作成

今はまだインスタンスがあるだけなので、まず最初にDBアカウントを作って行きます。
「Accounts」を選択し「Create Account」を選択します。

Alibaba Cloud RDS DBアカウント作成


任意の名前で特権アカウントを作ります。
※rootなどのスーパーユーザーはシステム側で利用しています。

Alibaba Cloud RDS 特権アカウント作成

同様に任意の名称でサーバーからのアクセス用の一般ユーザーアカウントを作成します。
「Authorized Databases」は権限付与するDBの選択ですがまだDBを作っていないので無しで作成します。

Alibaba Cloud RDS 一般アカウント作成

こんな感じで2つのDBアカウントができました。

Alibaba Cloud RDS DBアカウント作成

Database の作成

次にDatabaseを作って行きます。
「Databases」を選択し「Create Database」を選択します。

Alibaba Cloud RDS Database 作成

任意の名称(公式に則って guacamole_db としています)で Database Name を設定し、 Authorized Account に先程作った一般ユーザーを指定、権限も選択して作成します。

Alibaba Cloud RDS Database 作成

Database が作成され guacamole_user に権限も設定されました。

Alibaba Cloud RDS Database 作成後

テーブルと初期データの作成

001-create-schema.sql と 002-create-admin-user.sql という、テーブルと管理者アカウントを作成するSQLファイルが用意されているのでこれを流し込んでいきます。

普通にサーバーからSQLを流しても良いのですが、Alibaba Cloud にはDB管理用のツールとして Data Management Service (DMS) があるのでこれを使って行きたいと思います。

「Log On to Database」を選択します。

Alibaba Cloud RDS Log On to Database

先程作った特権ユーザーでアクセスしてみます、設定したらまずは「Test Connection」を選択します。

Alibaba Cloud DMS Log On

問題なければ以下の様に「Successful connection」が表示されると思います。

Alibaba Cloud DMS Log On Success

「Login」を選択します。

Alibaba Cloud DMS Login

こんな感じのDB管理ツールとかSQL実行環境っぽい画面が出ます。

Alibaba Cloud DMS Work

このツール結構いろんな機能を持っています。こんな感じのインポート画面とかもありますし、テストデータの生成なんかもできます。
GuacamoleはSQLファイルが用意されているので、ここからデータインポートしてみたいと思います。

Alibaba Cloud DMS Data Import

以下からローカルにファイルを取得します。または guacamole-client のソースコードの中から取ってきます。
https://downloads.apache.org/guacamole/1.3.0/binary/guacamole-auth-jdbc-1.3.0.tar.gz

展開すると以下の様な形でファイルがありますので、mysqlのところにあるSQlファイルを使います。

guacamole-auth-jdbc

Database を指定し、Attachment に 001-create-schema.sql を設定して「Submit」を選択します。

Alibaba Cloud DMS Data Import Submit

Check に通ったので実行します。ちなみに「Approval」の項目がある様に承認者を設定しておいて、実行前に承認者に確認してもらってから実行できる様な運用にも対応可能です。

Alibaba Cloud DMS Data Import Execute

実行タイミングの確認がでてきます。今回は誰も触ってたりしないので「Running immediately」で実行してしまいます。

Alibaba Cloud DMS Data Import Run

しばらくすると実行結果が表示されます。

Alibaba Cloud DMS Data Import Report

データベースを確認するとテーブルが作成されているのがわかります。

guacamole Create Table

もう一度、「Data Import」の画面に行き 002-create-admin-user.sql も取り込みます。
このファイルでWebアプリの管理者ユーザーが作成されます。

Alibaba Cloud DMS Data Import

ちなみに002-create-admin-user.sql の中身は以下の様になっています。
guacamole_entity、guacamole_user、guacamole_system_permission、guacamole_user_permission にデータを作っていますね。

--
-- Licensed to the Apache Software Foundation (ASF) under one
-- or more contributor license agreements.  See the NOTICE file
-- distributed with this work for additional information
-- regarding copyright ownership.  The ASF licenses this file
-- to you under the Apache License, Version 2.0 (the
-- "License"); you may not use this file except in compliance
-- with the License.  You may obtain a copy of the License at
--
--   http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing,
-- software distributed under the License is distributed on an
-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-- KIND, either express or implied.  See the License for the
-- specific language governing permissions and limitations
-- under the License.
--

-- Create default user "guacadmin" with password "guacadmin"
INSERT INTO guacamole_entity (name, type) VALUES ('guacadmin', 'USER');
INSERT INTO guacamole_user (entity_id, password_hash, password_salt, password_date)
SELECT
    entity_id,
    x'CA458A7D494E3BE824F5E1E175A1556C0F8EEF2C2D7DF3633BEC4A29C4411960',  -- 'guacadmin'
    x'FE24ADC5E11E2B25288D1704ABE67A79E342ECC26064CE69C5B3177795A82264',
    NOW()
FROM guacamole_entity WHERE name = 'guacadmin';

-- Grant this user all system permissions
INSERT INTO guacamole_system_permission (entity_id, permission)
SELECT entity_id, permission
FROM (
          SELECT 'guacadmin'  AS username, 'CREATE_CONNECTION'       AS permission
    UNION SELECT 'guacadmin'  AS username, 'CREATE_CONNECTION_GROUP' AS permission
    UNION SELECT 'guacadmin'  AS username, 'CREATE_SHARING_PROFILE'  AS permission
    UNION SELECT 'guacadmin'  AS username, 'CREATE_USER'             AS permission
    UNION SELECT 'guacadmin'  AS username, 'CREATE_USER_GROUP'       AS permission
    UNION SELECT 'guacadmin'  AS username, 'ADMINISTER'              AS permission
) permissions
JOIN guacamole_entity ON permissions.username = guacamole_entity.name AND guacamole_entity.type = 'USER';

-- Grant admin permission to read/update/administer self
INSERT INTO guacamole_user_permission (entity_id, affected_user_id, permission)
SELECT guacamole_entity.entity_id, guacamole_user.user_id, permission
FROM (
          SELECT 'guacadmin' AS username, 'guacadmin' AS affected_username, 'READ'       AS permission
    UNION SELECT 'guacadmin' AS username, 'guacadmin' AS affected_username, 'UPDATE'     AS permission
    UNION SELECT 'guacadmin' AS username, 'guacadmin' AS affected_username, 'ADMINISTER' AS permission
) permissions
JOIN guacamole_entity          ON permissions.username = guacamole_entity.name AND guacamole_entity.type = 'USER'
JOIN guacamole_entity affected ON permissions.affected_username = affected.name AND guacamole_entity.type = 'USER'
JOIN guacamole_user            ON guacamole_user.entity_id = affected.entity_id;

テーブルの内容を確認すると「guacadmin」が作成されているのが確認できます。

guacamole create admin

テーブルの作成とインポートはこれで完了です。

ApsaraDB for RDS のセキュリティ設定

さてこれでサーバーからつなげればOKなのですが、最後に一つ忘れがちな作業が残っています。
ECS から RDS へ接続できる様にセキュリティの設定を行います。
「Data Security 」の「Security Group」タブを選択し「Add Security Group」を選択します。

Alibaba Cloud RDS Security Group

Guacamole のWebアプリが動作するECSに割り当てているセキュリティグループを選択します。

Alibaba Cloud RDS Security Group Add

このRDSに接続可能なセキュリティグループが定義されました。

Alibaba Cloud RDS Security Group bind

「Database Connection 」の画面に移動すると「Internal Endpoint」が確認できます。
ECS からの接続先としてこれを使うので覚えておきましょう。

Alibaba Cloud RDS Endpoint

これでRDSの設定は完了です。


データベース認証拡張機能の設定

DBを使って設定情報を管理していくには、データベース認証用の拡張機能を取り込む必要があります。
最初に拡張機能設定用のディレクトリを作成します。

# sudo mkdir -pv /etc/guacamole/{extensions,lib}
mkdir: ディレクトリ `/etc/guacamole' を作成しました
mkdir: ディレクトリ `/etc/guacamole/extensions' を作成しました
mkdir: ディレクトリ `/etc/guacamole/lib' を作成しました

# ls -la /etc/guacamole/
合計 16
drwxr-xr-x   4 root root 4096  4月 21 21:24 .
drwxr-xr-x. 84 root root 4096  4月 21 21:24 ..
drwxr-xr-x   2 root root 4096  4月 21 21:24 extensions
drwxr-xr-x   2 root root 4096  4月 21 21:24 lib

今回はMySQLを使うのでMySQL用のモジュールを/etc/guacamole/extensions/に配置します。
その2でビルドした guacamole-client のディレクトリから持ってきます。

ビルドしていなければASF公式で配布しているtarファイルから持ってくることも可能です。
https://downloads.apache.org/guacamole/1.3.0/binary/guacamole-auth-jdbc-1.3.0.tar.gz

/etc/guacamole/extensions/ に guacamole-auth-jdbc-mysql-1.3.0.jar を配置します。

# cp guacamole-client-1.3.0/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/target/guacamole-auth-jdbc-mysql-1.3.0.jar /etc/guacamole/extensions/

# ls -la /etc/guacamole/extensions/
合計 5600
drwxr-xr-x 2 root root    4096  4月 21 21:32 .
drwxr-xr-x 4 root root    4096  4月 21 21:24 ..
-rw-r--r-- 1 root root 5723346  4月 21 21:32 guacamole-auth-jdbc-mysql-1.3.0.jar

また、JDBCドライバも必要なので取得して/etc/guacamole/libに配置します。

# cd /etc/guacamole/lib

# wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.23.tar.gz
--2021-04-21 21:36:11--  https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.23.tar.gz
dev.mysql.com (dev.mysql.com) をDNSに問いあわせています... 137.254.60.11
dev.mysql.com (dev.mysql.com)|137.254.60.11|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-8.0.23.tar.gz [続く]
--2021-04-21 21:36:12--  https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-8.0.23.tar.gz
cdn.mysql.com (cdn.mysql.com) をDNSに問いあわせています... 23.193.52.250
cdn.mysql.com (cdn.mysql.com)|23.193.52.250|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 4036068 (3.8M) [application/x-tar-gz]
`mysql-connector-java-8.0.23.tar.gz' に保存中

100%[===========================================================================================================================================>] 4,036,068   --.-K/s 時間 0.05s   

2021-04-21 21:36:12 (74.1 MB/s) - `mysql-connector-java-8.0.23.tar.gz' へ保存完了 [4036068/4036068]

そのまま展開すると余計なものまで展開されるのでjarファイルだけ取り出します。

# tar -zxvf mysql-connector-java-8.0.23.tar.gz -O mysql-connector-java-8.0.23/mysql-connector-java-8.0.23.jar > /etc/guacamole/lib/mysql-connector-java-8.0.23.jar
mysql-connector-java-8.0.23/mysql-connector-java-8.0.23.jar

# ls -la /etc/guacamole/lib/
合計 6312
drwxr-xr-x 2 root root    4096  4月 21 21:53 .
drwxr-xr-x 4 root root    4096  4月 21 21:24 ..
-rw-r--r-- 1 root root 2415211  4月 21 21:53 mysql-connector-java-8.0.23.jar
-rw-r--r-- 1 root root 4036068 12月  1 23:29 mysql-connector-java-8.0.23.tar.gz

これで必要なライブラリと拡張機能を配置できたので、プロパティの編集を行います
ファイル自体は無いので作成します。

# vi /etc/guacamole/guacamole.properties

guacamole.properties ファイルの内容は以下になります。内容はサンプルです。
mysql-hostname には RDS の「Internal Endpoint」を指定します。
mysql-username と mysql-password は RDS で作成したDBアクセス用のアカウントIDとパスワードを指定します。

# Guacamole Server (guacd)の指定
guacd-hostname: localhost
guacd-port: 4822


# MySQL properties
mysql-hostname: rm-XXXXXXXXXXXXXXXXX.mysql.japan.rds.aliyuncs.com
mysql-port: 3306
mysql-database: guacamole_db
mysql-username: guacamole_user
mysql-password: XXXXXXXX

# Password complexity
mysql-user-password-min-length: 8
mysql-user-password-require-multiple-case:true
mysql-user-password-require-symbol:true
mysql-user-password-require-digit:true
mysql-user-password-prohibit-username:true
mysql-user-password-history-size: 6

# Restricting authentication to database users only
mysql-user-required: true

# Auto-creating database users
mysql-auto-create-accounts: true

設定が完了したら。アプリケーションサーバー(今回はTomcat)を再起動します。

# sudo systemctl restart tomcat

Guacamole へのアクセス

https://xxxxxxx/guacamole にアクセスします。
※「xxxxxxx」の部分はドメイン名やIPアドレスが入ります。

ログイン画面が表示されるので「guacadmin」を入力してログインします。
デフォルトのパスワードはIDと同じです。

Apache  Guacamole Login Guacadmin

ログインすると以下の様な画面が表示されます。

Apache  Guacamole Login

RDS のモニタリング画面を見ると「Total Connections」が上昇しておりDBへのアクセスが発生していることも確認ができます。

Alibaba Cloud RDS Monitor

あとは設定画面で接続先の設定やアクセスユーザーを作成していけば利用可能です。

Apache Guacamole 設定画面

システムとしては構築が完了していますので、今回は一旦ここまでとします。
接続先を登録してアクセスする部分は次回簡単に紹介していこうかと思います。

Alibaba Cloud の Region 増えてた

  久々に Alibaba Cloud を覗いてみたら・・・ あ、なんかリージョン増えてるわ 昨年発表していたフィリピン(マニラ)リージョン、タイ(バンコク)リージョン、韓国(ソウル)リージョン が増えていたのでちょっと現状確認してみました。 フィリピン(マニラ)リージョンの場合...