Amazon RDS for SQL Serverでリンクサーバーを設定する

Amazon RDS for SQL Serverでリンクサーバーを設定する方法になります。

SQL Serverのバージョンは2019です。

RDSだと管理者権限が無いので設定できないと思ったのですが、設定できました。

 

以下、イメージ図です。

同じVPC内にあります。(AZ構成は省略)

f:id:rikues2012:20210910103021p:plain

イメージ構成図

前提

・RDSは作成済。

・SSMSで以下の操作からリンクサーバーを作成しようとするとエラーになる。

 「サーバーオブジェクト」→「リンクサーバー」で右クリック、「新しいリンクサーバー」をクリックすると、sysadminロールのメンバーでなければなりません。」と怒られます。

・なので、SSMSでTransact-SQLを使用して、リンクサーバーを作成する。

 

DB名:Test1(Testテーブル1つだけ作成)

f:id:rikues2012:20210910110324p:plain

 

DB名:Test2(Testテーブル1つだけ作成)

f:id:rikues2012:20210910105933p:plain

 

手順

Test1 から Test2へのリンクサーバーの設定を行う

 

1.  リンクサーバーを作成するクエリを2つ作る

 1-1. sp_addlinkedserverでリンクサーバーを設定

EXEC master.dbo.sp_addlinkedserver 
    @server = N'LINK_Test2', 
    @srvproduct='', 
    @provider='SQLNCLI', 
    @datasrc='xxxxx.xxxxx.ap-northeast-1.rds.amazonaws.com';

・server:作成するリンクサーバーの名前(何でもOK)
・srvproduct:リンクサーバーを作成するサーバー名(未指定で大丈夫)
・provider:リンクサーバーとして追加するOLE DBソース名(設定値:「SQLNCLI」)
         ※「SQLNCLI」を指定すると最新バージョンのClient OLE DBとなる
・datasrc:接続するRDSのエンドポイント

 

1-2. sp_addlinkedsrvloginでアクセスのための情報を設定

EXEC master.dbo.sp_addlinkedsrvlogin 
    @rmtsrvname=N'LINK_Test2',
    @useself='FALSE',
    @locallogin=NULL,
    @rmtuser='ユーザー名',
    @rmtpassword='パスワード';

・rmtsrvname:リンクサーバー名を指定(設定値:@serverと同じ名称)
・useself:基本はfalse(Windows認証したい場合は「true」)
・locallogin:ローカルサーバー上のログイン(設定値:NULL ※規定値もNULL)
・rmtuser:ユーザー名(@datasrcのDBに接続するユーザー名)
・rmtpassword:パスワード(@datasrcのDBに接続するパスワード)

 

2. クエリーを発行する。

f:id:rikues2012:20210910114246p:plain

SSMS リンクサーバー作成クエリ発行

リンクサーバーの設定により、別インスタンスにあるTest2内のテーブルが参照

することができました。

Test2 ⇒ Test1へのリンクサーバの設定も同様の手順で実施できます。

 

補足1

今回はRDS同士のリンクサーバーの設定でしたが、

EC2 on SQL Server と RDS for SQL Serverでもリンクサーバの設定は可能です。

※実施してはいませんが、公式サイトに記載がありました。

 

補足2

リンクサーバの削除はSSMSのGUIでできました。

削除するコマンド調べないで良かった。。

f:id:rikues2012:20210910120124p:plain

 

参考サイト

以下、公式サイトでの設定方法

 

以下、リンクサーバの設定方法

nginxとtomcat連携(たぶん最小手順)

【環境】
OS:Amazon Linux2(Linux7 or CentoOS7 と同じ)

自動起動(systemctl enable)の設定は省いています。


【手順】
1、nginxをインストール
  yum install -y nginx

2、javaインストール
  yum install java-11-amazon-corretto

3、Tomcatインストール
  // インストール
  yum install tomcat
  // 起動
  systemctl start tomcat

4、手動で以下にファイルを作る
  /var/lib/tomcat/webapps/ROOT/index.html
  ファイルの中身は「test」などの文字列でOK。

5、nginxとtomcatを連携
  // 以下に移動
  cd /etc/nginx
  // 太字の個所のみ修正
  vim nginx.conf

       server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        #root         /usr/share/nginx/html; ← この行をコメント
        root         /var/lib/tomcat;   ← この行を追加 
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
                proxy_pass http://localhost:8080/; ← この行を追加
        }

  // nginxの再起動
  systemctl restart nginx


6、確認
  http://サーバのIP/

  ブラウザ上に「test」の文字列が表示される。


以上で完了です。

【備考】
「/etc/nginx/conf.d」配下にconfファイルを新規で作成し設定したのですが、
連携できなかったため、「/etc/nginx」配下のファイルを直接編集しました。

【参考】
https://qiita.com/syun484/items/ffca21eca78e828cb4c2

IISからFSx for Windows File Server内のファイルを参照する

はじめに

以前はIISのコンテンツをファイルサーバ(EC2)で保持していたのですが、

サーバの管理が大変なので、代わりにFSx for Windows File Server (以下 FSx)

を使用することにしました。

IISの仮想ディレクトリの参照先をFSxとする手順を記載します。

 

前提

・FSx、AD、EC2のIISインストールまでは作成済

・ADはMicrosoft AD(AWSのマネージドサービス)

 ※Microsoft ADだとユーザは追加できないので、「Admin」ユーザを使う

・EC2(検証用サーバ):Windows Server 2019(IISはバージョン10)

 

構築して分かったこと

・FSxを作るときにADは無くて良いのではないか?

 ⇒ FSx作成手順にAD作成は必須

IISがあるEC2はドメイン認証させずにファイル共有できないのか?

 ⇒ ドメイン認証させないとダメ(私はダメでした)

  ただしネットワークドライブの割り当てはドメイン認証無しでOK

 

手順

1. AWSコンソールからADのDNS名とDNSアドレスとメモする。(赤枠のところ)

f:id:rikues2012:20210908170306p:plain

AWSコンソール AD

 

2. AWSコンソールからFSxのDNS名をメモする。(赤枠のところ)

f:id:rikues2012:20210908172017p:plain

AWSコンソール FSx

※FSx構築時にDNSエイリアスを設定した方が良いと思います。

 

3. 検証用サーバ(EC2)のDNSサーバのアドレスを設定

 3-1. 使用しているネットワークを右クリックし、「プロパティ」を選択

 3-2. 「インターネットプロトコルバージョン4」を選択し、「プロパティ」を押下

 3-3. 1でメモしたDNSアドレスを赤枠のところに入力し、「OK」押下

f:id:rikues2012:20210908173702p:plain

Window Server2019 DNSサーバー設定


4. 検証用サーバ(EC2)をドメインに参加させる

 4-1. [コントロールパネル]-[システムとセキュリティ]-[システム]の

   「コンピューター名、ドメインおよびワークグループの設定」の「設定の変更」を押下

 4-2. 「変更」を押下

 4-3. 1でメモしたADのDNS名を赤枠のところに入力し、「OK」を押下

f:id:rikues2012:20210908174509p:plain

Window Server2019 ドメイン参加

ここでユーザとパスワードの入力が必要になります。

Microsoft AD作成で作成したユーザとパスワードを入力します。

ユーザはAdmin@<ADのDNS名>で、この設定だと「Admin@fs.local」。

設定を反映させるため、サーバの再起動が必要

 

5. IISの仮想ディレクトリを作成

事前に以下を設定

・FSxの下に「img」フォルダを作りサンプルとして「fsx.png」の画像を配置

IISのサイトを1つ作成(ここでは「fsx-test」)

 5-1. 対象のサイトから「仮想ディレクトリの追加」を選択し、

   以下を入力し、「接続」押下

f:id:rikues2012:20210908180429p:plain

IIS 仮想ディレクトリの追加

エイリアスは任意の値で何でもOK。

物理パスは2でメモしたDNS名を設定。

※shareは標準で作成されるフォルダなので、「DNS名¥share¥・・・」となる。

 

 5-2.「特定のユーザー」を選択し、「設定」を押下

 5-3. ユーザー名とパスワードを入力し、「OK」を押下

f:id:rikues2012:20210908181143p:plain

IIS 仮想ディレクトリの追加 接続情報入力

Microsoft AD作成で作成したユーザとパスワードを入力します。

ユーザはAdmin@<ADのDNS名>で、この設定だと「Admin@fs.local」。

 

6. アプリケーションプールの設定

 6-1. 対象のアプリケーションプールを選択し、右ペインの「詳細設定」を選択

 6-2. 「プロセスモデル」の「ID」の右にある「...」(赤枠のところ)を押下 

f:id:rikues2012:20210908184152p:plain

アプリケーションプール 詳細設定

 6-3. 「カスタムアカウント」を選択し、「設定」を押下

 6-4. ユーザー名とパスワードを入力し、「OK」を押下

f:id:rikues2012:20210908184715p:plain

アプリケーションプール 資格情報の設定

Microsoft AD作成で作成したユーザとパスワードを入力します。

ユーザはAdmin@<ADのDNS名>で、この設定だと「Admin@fs.local」。

※アプリケーションプールのID設定はデフォルトでも問題無く動作することも確認済なので、この6の手順は実施しないでも問題無い。

 

 

7.サンプルのHTMLを作成し、動作確認

 7-1. IIS内にサンプルのHTMLを作成

   赤枠のところがFSxの画像を参照しているところです

f:id:rikues2012:20210908185339p:plain

HTML FSx動作確認用サンプル

 7-2. EC2上のWebブラウザで「http://localhost/」を入力し、確認。

f:id:rikues2012:20210908185936p:plain

Webブラウザ 動作確認

 

以上で完了となります。

 

参考サイト

dev.classmethod.jp

qiita.com

 

pflogsummの設定(deliveredが0件の場合)

Postfixをver2.2⇒2.6に変更したら、pflogsummの出力結果について問題あり。
receivedの件数は出力されているが、deliveredの件数がすべて0件になっている。
さらにちゃんと見たら、deferred、bounced、rejectedもダメでした・・・。

以下、原因と対処をまとめました。

1.原因
Postfix2.2以降を使用している場合は、ログの出力形式が異なり
pflogsumm 1.1.0だと正常に解析できないため、deliveredが常に0件になる。

参考サイトURL:
## pflogsummの変更履歴
  http://jimsun.linxnet.com/downloads/ChangeLog-1.1.1

## pflogsummの問題点について書いてある
http://satospo.sakura.ne.jp/blog_archives/tech/linux_server/pflogsumm.html

※pflogsumm 1.1.1の変更履歴をちゃんと見たら、Postfix-2.3以上のログファイルに対応するために変更した!!って書いてあった・・・。

2.対処方法
pflogsummを1.1.1にアップデートし、正常にdeliveredの値が出力されることを確認。

インストールモジュール配布先URL:
http://jimsun.linxnet.com/postfix_contrib.html

pflogsummツールはPerlなので、コピペして入れるだけでOKです。
Postfix2.2のメールログもver1.1.1で正常に出力できることを確認しました。

sqlnet.ora(プローブ・パケット送信設定)

DB接続をするアプリで初回アクセス時、又は一定時間経過してアクセスした場合エラーになる。

↑のような事象が発生しました。
こんなことってよくあるのでしょうか?

理由は一定時間アクセスがないとコネクションが切断してしまうことがある。
とのことでした。

で、以下の対応をしました。
$ORACLE_HOME/network/admin 配下にある「sqlnet.ora」を編集しました。
以下の内容を追記及び修正する。(sqlnet.ora)
----------------------------------------------------
TCP.VALIDNODE_CHECKING = YES
TCP.INVITED_NODES=(サーバ1, サーバ2, サーバ3)
SQLNET.EXPIRE_TIME=送信間隔
----------------------------------------------------
上記の対応により、一定時間ごとにプローブ・パケットを送信しコネクションが切断されることを防ぎました。送信間隔は10分(推奨値)にしました。
どのシステムも上記のような設定をしているのでしょうか・・・。

以下の制限もありますが、あまり気にせずに・・・。


•Bequeathed接続には使用できません。
•プローブ・パケットはわずかながら通信量が増加するため、ネットワーク・パフォーマンスが低下する可能性があります。
•使用しているオペレーティング・システムによっては、サーバーで接続プローブ・イベントとその他のイベントを区別するための処理が必要になることがあります。

これも、ネットワーク・パフォーマンスの低下につながる可能性があります。

[補足]
TCP.VALIDNODE_CHECKING
 TCP.INVITED_NODESおよびTCP.EXCLUDED_NODESをチェックし、アクセス権を付与または拒否するクライアントを決定します。
   デフォルトはno(アクセス権を付与しない)です。

TCP.INVITED_NODES
 データベースへのアクセスを許可するクライアントを指定します。

・SQLNET.EXPIRE_TIME
 このパラメータはサーバ/クライアント間でのプローブ・パケットの送信間隔(分)。

 デフォルトは0(送信しない)です。

さらに詳しくは以下を参照して下さい。
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/network.102/B19209-01/sqlnet.htm

かんたんなショッピングサイトの作成概要

自分でサーバを借りたり、ドメインを取得したりしたのは初めてでした。

AWS、AZUREなどのクラウドサービスを使ったほうが楽ですが、コスト的にはレンタルサーバの方が安いので、今回はそうしてみました。

以下の用な流れで作業を行いました。

1.無料でホームページを作れるところでサンプルを作る。
 1) ホームページ作成場所を探す。
   どこでもよかったのですが、商用のホームページの作成が許可されていて、
   広告が少なそうなFC2を選びました。

   ここです ⇒ http://web.fc2.com/

 2) テンプレートを探す
  0から作るのは、やっぱり大変。だけど、自分なりに少し工夫したいということで、
  テンプレートを探しました。
  以下、商用サイト向けCSSテンプレートです。約20種類あります。
  http://www.coolwebwindow.com/template/public.php
  HTMLも綺麗で、CSSも分かりやすく書いてあるので、修正するのが簡単でした。
  ちなみに私はNo.19を選びました。

 3) 画像や文字を少し変えて、お客さん(といっても知り合いです。)に見てもらう。
  実際に何もない状態だとイメージもわかないので、自分なりに適当に作り、お客さんがみる。
  実際に初めに作ったものとけっこう変わってしまいましたが、スムーズに話しは進みました。

 

2.レンタルサーバを借りる(ちょっと日本語変かも・・・)

       そこそこ名前が知れていて、値段がやすいところを選びました。

  いろいろ探した結果、

  FC2レンタルサーバーLite ⇒ http://fc2-rentalserver.com/

       にしました。

   初期費用2000円、年間費用3000円と格安です。

  機能的には

  ・独自ドメイン ⇒ ○

  ・PHP     ⇒ ○

  ・MySQL           ⇒ ○

  ・商用利用         ⇒ ○

だったので、私的にはOKでした。

メール送信もサブミッションポート使っているし。

ただ、マルチドメインはできません。この値段じゃ仕方ないけど・・・。

 

3.独自ドメイン取得

       たぶん探せばいっぱい安いところあります。

  私はレンタルサーバもFC2だし、いろいろ探すのは疲れたし、FC2でドメインを取得しました。

        FC2 Domain ⇒ http://domain.fc2.com/

 

  あっ、FC2ばかり取り上げていますが、関係者ではないです。

  なんとなく「.com」が良かったのですが、使われていたので、「.net」にしました。

  1年間で1180円です。

  

  トータル年間6180円です。(1年目)

  2年目からは4180円。