arashi1977さんの助け合いフォーラム投稿一覧
設問からは
同社はデータセンターの自然災害時の影響を考慮して、AWSを利用した災害復旧(DR:Disaster Recovery)を計画している。
のですから、仮にデータ同期やオンプレミスのシステム停止時切り替えのためにDirectConnectで接続していたとしても、そもそもデータセンターが自然災害により使用不可能な(DirectConnectエンドポイントが機能しない)状態を想定しているので
障害時にAWSに切り替えるには、通常はDirect Connectでつないでいるのが一般的な構成かと思います。
だと、「どこのエンドポイントからAWSのバックアップ環境にDirectConnect接続するの?」って観点が不足しているのではないかなと思います。
DNSに関する用語は定義がはっきりしていなかったりするので曖昧に表現すると齟齬が発生する元なので難しいところです。
ここでいう「ホスト名」は「(完全修飾)ドメイン名」の意味で使われていると思われます。逆に、I-chan0234さんがいう「ドメイン名」が完全修飾ドメイン名(FQDN)を意図しているのであれば同一視しても良いと思います。
まぁ問題的には「IPアドレスではなく、名前」というぐらいの意味で理解しても間違いではなさそうです。
本来NICから送信可能な最大サイズを超えたデータが検出されたという意味ですが、そんなの送ってくる時点で送出側のNICが上限以内に収めることができない(正しく動作できてない)と考えられるからですね。
https://www.cisco.com/c/ja_jp/support/docs/switches/catalyst-6500-series-switches/12027-53.html#toc-hId--939937013
ジャイアント フレームとは、イーサネットの最大フレーム サイズを上回る(1518 バイト以上)、不正な FCS を持つフレームのことです。
解説のこの部分についてはcopilotは何か言っていましたか?
また下図の通り、インターフェース(GigabitEthernet0/0)の帯域幅は「bandwidth 100000」によって「100000Kbps」へ変更されています。
うーん…なんか表現の問題な気がしますが
ソリューションアーキテクトは複数のEC2インスタンスで動作するサーバーのストレージについて検討している。
これ、「サーバー」じゃなくて「サービス」とかなら意味がわかるんですよねぇ。
割と「サーバー = EC2インスタンス」な関係だと思うので、Kurojunさんのおっしゃる通り「1つのストレージで複数のインスタンスにアタッチできるもの」という条件にもよめます。でも次の
サーバーのデータは複数のEC2インスタンスにコピーして保存し、データ損失に耐えられるようにする。
からすると「データは複数のインスタンスにコピーされ(複製がある状態にして)データ損失に耐えられる」ためには「1つのストレージ」だと達成できないのですよね。なので「マルチアタッチ」も不適切かなと。
そういうことからすると単純にIOPSだけ見てインスタンスストアってのは導ける気もしますが、なんかうーんって感じますね…
自分の読解力の問題ですみません。質問の内容がよく理解できませんでしたが、こういう検証をしたいがうまくいかないので質問したという意図で良いのでしょうか?
・動的inodeのファイルシステム(例:Btrfs)の準備
# dd if=/dev/zero of=/tmp/btrfs.img bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 2.65423 s, 395 MB/s
# mkfs.btrfs /tmp/btrfs.img
btrfs-progs v5.16.2
See http://btrfs.wiki.kernel.org for more information.
NOTE: several default settings have changed in version 5.15, please make sure
this does not affect your deployments:
- DUP for metadata (-m dup)
- enabled no-holes (-O no-holes)
- enabled free-space-tree (-R free-space-tree)
Label: (null)
UUID: d8471c85-31fe-4aa8-b94c-83c30de9637a
Node size: 16384
Sector size: 4096
Filesystem size: 1000.00MiB
Block group profiles:
Data: single 8.00MiB
Metadata: DUP 50.00MiB
System: DUP 8.00MiB
SSD detected: no
Zoned device: no
Incompat features: extref, skinny-metadata, no-holes
Runtime features: free-space-tree
Checksum: crc32c
Number of devices: 1
Devices:
ID SIZE PATH
1 1000.00MiB /tmp/btrfs.img
# mount -t btrfs /tmp/btrfs.img /mnt
# mount | grep /mnt
/tmp/btrfs.img on /mnt type btrfs (rw,relatime,ssd,space_cache=v2,subvolid=5,subvol=/)
# df /mnt
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/loop2 1024000 3616 904192 1% /mnt
・何か元になるファイルを用意する(今回はカーネルイメージ)
# cp /boot/vmlinuz /mnt
# ls /mnt
vmlinuz
# ls -l /mnt
total 11364
-rw------- 1 root root 11634760 Mar 20 14:25 vmlinuz
・ファイルシステムの空き容量を確認する(今回は892828)
# sync
# df /mnt
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/loop2 1024000 14980 892828 2% /mnt
・ハードリンクを作ってみる(今回はコピーしたカーネルイメージを hardlink というファイルにリンク)
# ln /mnt/vmlinuz /mnt/hardlink
# ls -l /mnt
total 22728
-rw------- 2 root root 11634760 Mar 20 14:25 hardlink
-rw------- 2 root root 11634760 Mar 20 14:25 vmlinuz
・ファイルシステムの空き容量に変化があるか確認する(変化なく892828のまま)
# sync
# df /mnt
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/loop2 1024000 14980 892828 2% /mnt
・ハードリンクが同じinodeを使用しているかを確認する(どちらも 257)
# stat /mnt/vmlinuz
File: /mnt/vmlinuz
Size: 11634760 Blocks: 22728 IO Block: 4096 regular file
Device: 2eh/46d Inode: 257 Links: 2
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2024-03-20 14:25:41.540446902 +0900
Modify: 2024-03-20 14:25:41.556447169 +0900
Change: 2024-03-20 14:26:58.613713062 +0900
Birth: 2024-03-20 14:25:41.540446902 +0900
# stat /mnt/hardlink
File: /mnt/hardlink
Size: 11634760 Blocks: 22728 IO Block: 4096 regular file
Device: 2eh/46d Inode: 257 Links: 2
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2024-03-20 14:25:41.540446902 +0900
Modify: 2024-03-20 14:25:41.556447169 +0900
Change: 2024-03-20 14:26:58.613713062 +0900
Birth: 2024-03-20 14:25:41.540446902 +0900
ネットワークのアドレス設計のためですね。簡単な例を出すと
- 県(47)単位に個別のアドレスを割り当てたい
- 県に割り当てたネットワークアドレスの範囲内で、市町村単位にネットワークを分割する(北海道は179市町村あるんですね https://uub.jp/rnk/nctv.html )
- 各市町村には最低でも10台分のホストアドレスが必要
- 規模の大きい自治体には潤沢に、部署単位でも割り当てられるようにしたい
みたいな条件が設定された時に、「市町村単位」や規模の大きい自治体の部署ごとだったりがサブネットになりますが、その場合にどのぐらいの範囲のアドレスを割り当てるようにすべきかといったことを考える際に必要になる知識です。
構築や設計をしないのであれば知らなくてもそんなに困りませんが、そういう領域に関わるのなら必須ですね。
はい、その通りです。コマンドリファレンスにも明確に記載があります。
https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/interface/command/ir-cr-book/ir-t2.html#wp9179171580
tunnel destination {host-name | ip-address | ipv6-address | dynamic}
IP reachabilityがあるかどうかではなく、経路が存在するかどうかだからですね。
設問の設定は
R1(config)#track 10 ip route 192.168.2.3 255.255.255.255 reachability
なので、 192.168.2.3/32 の経路が存在するかどうかをチェックしています。提示された 192.168.2.0/24 をOKにしたいのであれば
R1(config)#track 10 ip route 192.168.2.0/24 reachability
とする必要があります。
つまり、setvalの直後に(nextvalを行わずに)currvalを呼び出すとエラーになるという意味だと思いますが、問題35306では、setvalの直後に(nextvalを行わずに)currvalを呼び出すと値が取れると書いてあります。
これは条件を正しく一致させてないですね。シーケンス作成直後の状態とsetval()直後の状態は同じではありません。
前者(問題ID:35022)だとこういう話ですよね。
$ docker run --name postgres13 -e POSTGRES_PASSWORD=mysecretpassword -d postgres:13
5eae36f2d752bd9e7de8f351e4f80e8ed7e0cdf6c73c0a71516b2014641ba52a
$ docker exec -it postgres13 psql -U postgres
psql (13.14 (Debian 13.14-1.pgdg120+2))
Type "help" for help.
postgres=# CREATE SEQUENCE q35022;
CREATE SEQUENCE
postgres=# select currval('q35022');
ERROR: currval of sequence "q35022" is not yet defined in this session
作成直後のシーケンスは(START句で指定していない限り)初期値が存在しないので、そのままだと「何を返せばいいかがわからないので現在値を取得しようとするとエラーになる」ものです。なお、その場合でも「nextval()」をすることで初期値(デフォルトの最小値)が定義されるので、その後はcurrval()が利用可能になります。
postgres=# select nextval('q35022');
nextval
---------
1
(1 row)
postgres=# select currval('q35022');
currval
---------
1
(1 row)
問題ID:35306の場合はこうですね。最初にsetval()で値をセットしているのでnextval()しなくても値がすでに存在するので、そのままcurrval()で値が取れます。
postgres=# CREATE SEQUENCE sample_seq CACHE 5 NO CYCLE;
CREATE SEQUENCE
postgres=# SELECT setval('sample_seq', 100);
setval
--------
100
(1 row)
postgres=# SELECT currval('sample_seq');
currval
---------
100
(1 row)
setval()が初期値をセットしているので、setval()する前だと問題ID:35022と同じことが起きます。
postgres=# CREATE SEQUENCE sample_seq_2 CACHE 5 NO CYCLE;
CREATE SEQUENCE
postgres=# SELECT currval('sample_seq_2');
ERROR: currval of sequence "sample_seq_2" is not yet defined in this session
postgres=# SELECT setval('sample_seq_2', 200);
setval
--------
200
(1 row)
postgres=# SELECT currval('sample_seq_2');
currval
---------
200
(1 row)
・OSをインストールして使用する
という条件なので、COLD HDDだとそぐわないように思います。
OSは起動時にかなりのファイルにアクセスがあったり、ログ書き出しやら色々稼働中もアクセスがあるので「利用頻度の低い」アクセスとはならない認識なのですが
テスト環境とアプリケーションの動作確認目的では違うと思います。
について、COLD HDD 対 汎用SSD(gp3)の比較で「どう考えても」というのはどのあたりの話になるのでしょうか?
パッシブ(passive)だけ考えるとわかりにくいんですよね。その逆のアクティブ(active)も意識するとイメージしやすいかもです。
単純に英語の意味で取れば「passive:受動的」「active:能動的」なので、passive interfaceとは「自分から何かするわけではない」インターフェースと理解できます。ということは「HelloやLSAの送信はしない」けれど「OSPFドメイン内には存在する」インターフェースだと言えます。OSPFドメイン内に存在するので、同じOSPFプロセスに属していればそのインターフェースのリンク、ネットワーク情報をアドバタイズする対象にできるんですね。
また、ルート情報をアドバタイズする(それなりの負荷がかかる)ならばそもそもパッシブインターフェースの設定をするメリットはなんなのでしょうか。
これは設問の図が答えですね。OSPFのパケットを送っても無視するだけの相手しかいないところにHello/アップデートパケットを投げる意味は全くないから送らないようにする、です。
ご質問の意図がちょっとよく読み取れなかったのですが、「最大8つ」という記載はあるので「設定している値全て」が8を超える場合は想定されている挙動とは異なるのではないでしょうか?
https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy-multivalue.html
Route 53 responds to DNS queries with up to eight healthy records and gives different answers to different DNS resolvers.
設問のポイントってここですよね?
同社は、この構成における単一障害点をなくし、可用性を高めたいと考えている
単一障害点をなくすということは、現在単一障害点があるということになりますので、それがどこかが分かればすぐかと思います。
今の構成って
- 開発と本番のVPCはVPCピアリングされている→AWSの内部で冗長化ずみ
- 開発用VPCとオンプレミスDCはSite-to-Site VPN接続している。DC側には「単一の」カスタマーゲートウェイがある→DC側にシングルポイントがある
- 本番用VPCとオンプレミスDCは複数のAWS Direct Connect構成で通信している→Direct Connectの冗長化ずみ
この時点で単一障害点になりうるのは「開発用VPCとオンプレミスDC」です。それを踏まえて
・開発用VPCのSite-to-Site VPNのVPNトンネルを複数設定し、VPN接続の冗長性を確保する
と
・オンプレミスのデータセンターに新たにカスタマーゲートウェイを追加し、Site-to-site VPN接続の冗長性を確保する
前者は「VPNトンネル」を複数設定していますが、そもそも「トンネル」は論理的な接続のことです。論理的なパスを複数作成してもオンプレミス側のカスタマーゲートウェイの数は増えません(論理的なIPsec接続設定を増やすだけです)ので、単一障害点は変わりません。
※参考: https://www.cisco.com/c/ja_jp/support/docs/smb/routers/cisco-rv-series-small-business-routers/Configure-AWS-S2S.pdf
後者は「カスタマーゲートウェイ」という物理的な装置を増やしていますので、現状の「単一のカスタマーゲートウェイ」という単一障害点をなくせる構成変更です。参考の「○AWS Site-to-Site VPNの高可用性の実現」に記述がありますね。
こうしてみてみると、それぞれの選択肢の意味って違うものかと思いますが、どうでしょうか?
記述ルール(コーディング規約)に迷ったらPEP8が参考になります。
https://pep8-ja.readthedocs.io/ja/latest/
文字列に含まれる引用符¶
Python では、単一引用符 ' で囲まれた文字列と、二重引用符 " で囲まれた文字列は同じです。この PEP では、どちらを推奨するかの立場は示しません。どちらを使うかのルールを決めて、守るようにして下さい。単一引用符 や 二重引用符 が文字列に含まれていた場合は、文字列中でバックスラッシュを使うことを避けるため、もう一方の引用符を使うようにしましょう。可読性が向上します。
「文字列型データ」も「キーとなる文字列」も「辞書の(文字列型の)値」も全て文字列ですので、上記のルールに従っていれば何も問題ありません。