ablog

不器用で落着きのない技術者のメモ

AWS

Amazon RDS のメモリ使用量を確認する

AWS

Amazon RDS のメモリ使用状況を調べる際に確認すべきポイント。以下のスクリーンショットは Aurora MySQL。 CloudWatch メトリクス Freeable Memory (実質メモリ使用量)を確認する。/proc/meminfo に MemAvailable に相当する(参考)。メモリ使用量を監視…

redis-rb の接続モードによる ElastiCache(Redis) フェイルオーバー時の復旧時間を計測してみた

ElastiCache(Redis) に redis-rb からアクセスし、接続モード(cluster or host)によるフェイルオーバー時のリカバリ時間を計測してみた。 検証結果 $ CONN_OPT=host bash exec_redis-rb_sample.sh > redis-rb_sample_cluster_`date '+%Y-%m-%d-%H%M%S'`.lo…

SOSP21 で best paper 賞を受賞した S3 の論文を読んでみる

AWS

SOSP21 で best paper 賞を受賞した S3 の論文 "Using Lightweight Formal Methods to Validate a Key-Value Storage Node in Amazon S3" を読んでみる。 Abstract This paper reports our experience applying lightweight formal methods to validate the …

AWS DMS タスク停止時に PostgreSQL の WAL が溜り続けないようにする

AWS

AWS DMS のソースが PostgreSQL で CDC を使う場合、DMS タスクを停止すると、PostgreSQL の WAL が溜まってストレージ使用量が増える。 レプリケーションスロットを削除すると、WAL が削除されるようになる。 SELECT * FROM pg_replication_slots; SELECT p…

AWS DMS のチューニング

AWS

AWS DMS タスクでターゲットレイテンシーが高い場合のトラブルシューティング Best practices for AWS Database Migration Service - AWS Database Migration Service Debugging Your AWS DMS Migrations: What to Do When Things Go Wrong? (Part 3) | AWS …

CloudWatch アラームを AWS Chatbot 経由で Slack に通知する

AWS

CloudWatch アラームを AWS Chatbot から Slack に連携して通知してみた。 CloudWatch アラームは Redshift への接続数 > 5 というシンプルなものにした SNS トピックは KMS カスタマー管理型キーで暗号化した(マネージドキーは Cloudwatch からアクセスで…

CloudWatch アラームから SNS への通知で KMS から AccessDeniedException と怒られる

AWS

事象 CloudWatch アラームから SNS への通知で KMS から AccessDeniedException と怒られる アクション arn:aws:sns:ap-northeast-1:123456789012:cloudwatch-test-sns の実行に失敗しました。エラーが発生しました: "null (Service: AWSKMS; Status Code: 4…

Amazon Redshift でクエリの単体性能を計測するスクリプト

AWS

yoheia/aws/redshift/redshift_measuring_query_exec_time at master · yoheia/yoheia · GitHub

Amazon Redshift のクエリモニタリングルールで長時間実行クエリーを中止する

Amazon Redshift の WLM クエリモニタリングルールで、一定時間以上実行されているクエリを中止してみた。 以下の例では 10 秒以上要したクエリを中止している。 実行結果 [ec2-user@ip-172-31-0-222 ~]$ export LC_ALL=C [ec2-user@ip-172-31-0-222 ~]$ cat…

Invalid Action: The action s3:CreateMultipartUpload does not exist

AWS

事象 S3 バケットポリシーのアクションで s3:CreateMultipartUpload を許可すると "Invalid Action: The action s3:CreateMultipartUpload does not exist. " というエラーが出る。 原因 Create Multipart Upload に必要な権限は s3:PutObject。 s3:CreateMu…

Laravel からクラスターモード有効な ElastiCache(Redis) へのアクセスでタイムアウトが発生する

AWS

事象 Laravel からクラスターモード有効な ElastiCache(Redis) へのアクセスでタイムアウトが発生する 解決策 Laravel の database.php を以下の通り設定 'redis' => [ 'client' => env('REDIS_CLIENT', 'predis'), 'options' => [ 'cluster' => env('REDIS_…

Aurora PostgreSQL に RDS Proxy 経由で同時多重でクエリを発行中に Reader インスタンスを削除してみる

AWS

Aurora PostgreSQL に RDS Proxy 経由で同時多重でクエリを発行中に Reader インスタンスを削除すると、クエリでエラーが発生するか確認してみた。 To Do pgbench で -d オプション付きで試す。 検証手順 psql で接続する $ psql -h apg117-2-test-read-only…

RDS Proxy 経由で Aurora の Reader エンドポイントに同時多重でクエリを発行して均等分散することを確認した

AWS

Aurora PostgreSQL の Reader エンドポイントでクエリが均等分散しない場合 - ablog について RDS Proxy 経由だとどうだろうと思って検証してみたら、概ね均等分散してくれてた。 検証手順 psql で接続する $ psql -h apg117-2-test-read-only.endpoint.prox…

EC2のネットワーク帯域のベースラインの調べ方

AWS

以下のようにドキュメントに記載されている。 General purpose instances - Amazon Elastic Compute Cloud 参考 † これらのインスタンスでは、ネットワーク I/O クレジットメカニズムを使用しながら、帯域幅の平均使用率に基づき、ネットワーク帯域幅をイン…

Recovery time will vary with the amount of data to be recovered

AWS

2016年4月19日 8:49:39 UTC+9 Recovery of the DB instance has started. Recovery time will vary with the amount of data to be recovered.(中略)RDS では、内部でDB ノードのモニタリングを行っておりますが、DB ノード等に問題が検知された場合は復旧…

S3 アクセスポイント経由と特定のIAMロールのみのアクセスを許可するバケットポリシー

AWS

S3 アクセスポイント経由と特定のIAMロールのみのアクセスを許可するバケットポリシーをメモ。 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "*", "Resource": [ "arn:aws:s3:::s3-bucket-name"…

CloudFormation で ElastiCache(Redis) をクラスターモード有効で作成する

AWS

Resources: # https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html RedisCluster: Type: AWS::ElastiCache::ReplicationGroup Properties: AutoMinorVersionUpgrade: true # enable Cluster Mo…

Aurora PostgreSQL のリストア時間の計測

AWS

あくまで参考値ですが、ちょっと計測してみた。 準備 pgbench でデータを投入する $ pgbench -i -s 1000 -U awsuser -h aurora-postgres124.cluster-********.ap-northeast-1.rds.amazonaws.com -d postgres dropping old tables... creating tables... gene…

Aurora PostgreSQL の DR 対策

AWS

Aurora PostgreSQL–based DB clusters don't support Aurora Replicas in different AWS Regions. That means you can't configure your Aurora PostgreSQL DB cluster for cross-region replication. However, you can scale reads and achieve high availa…

セキュリティグループ変更時に "ou may not specify a referenced group id for an existing IPv4 CIDR rule" と怒られる

AWS

エラーが出るケース セキュリティーグループのソースを変更するようなケースで、エラーが出ます。 例えば、ソースの設定を 0.0.0.0/0 のように設定していたセキュリティーグループで、ソースをセキュリティグループID(sg-xxxxxxxx)に変更するケースです。(E…

Docker イメージを作成して、ECR に push する

AWS

EC2インスタンス(Amazon Linux 2)を作成して、Docker Image を作成して、ECR に push したメモ。 Docker をインストール/起動する $ sudo yum -y update $ sudo yum -y install docker $ sudo systemctl start docker Docker イメージを作成する $ mkdir …

GitHub でコミットハッシュからコミットを探す

AWS

https://github.com/{owner}/{project}/commit/{hash} の {hash} にコミットハッシュを指定すればよい。例えば、 antirez in commit 2810de9f: Cluster: abort loading nodes data if vars arguments are unbalanced. 1 file changed, 1 insertion(+) https:…

ElastiCache(Redis)のフェイルオーバー時間

AWS

ElastiCache(Redis)を手動フェイルオーバーしたときの時間を計測してみたメモ。 構成 クラスターモード有効 1シャード x 2レプリカ = 3ノード ノードタイプ: r5.large 手順 EC2 で以下のスクリプトを実行する $ ruby redis-rb_sample.rb マネジメントコンソ…

ElastiCache(Redis) クラスターのシャード数とレプリカ数のベストプラクティス

AWS

2. Three-shard minimum Redis Cluster: Having a minimum of three shards provides improved availability by providing faster recovery during both planned and unplanned failovers. Amazon ElastiCache for Redis supports up to 500 total nodes in …

Glue Spark で出力ファイルサイズのサイズを大きくする

AWS

Glue Spark で出力ファイルサイズのサイズを大きくしたメモ。 サマリ 以下の2つの方法がある。 Glue カタログでデータソースの Table Properties で以下を指定する groupFiles: inPartition 入力ファイル数が 50,000 以下でもグループ化を有効にする groupSi…

Amazon Linux 2 に redis-rb をインストールして使ってみた

Amazon Linux 2 に redis-rb をインストールし、クラスターモードが有効な ElastiCache(Redis) に対して、Configuration エンドポイントを使ってアクセスしてみた。 インストール Amazon Linux 2 に rbenv をインストールする - ablog redis-rb をインストー…

Amazon Linux 2 に rbenv をインストールする

必要なパッケージをインストールする sudo yum install -y git gcc openssl-devel zlib-devel rbenv をダウンロードする git clone https://github.com/sstephenson/rbenv.git ~/.rbenv git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/p…

Redis の Ruby Client

AWS

Black Belt Online Seminar ElastiCache P.20 redis-rb ソースコード: GitHub - redis/redis-rb: A Ruby client library for Redis ElastiCache(Redis) クラスターの configuration エンドポイントに対応している。 そして、以下試した所いけた!嬉しかった…

ElastiCache(Redis) のレプリケーションラグを計測してみた

AWS

ドキュメントの説明 Q: アクティブなリードレプリカの状態はどのように把握できますか? デプロイ済みのすべてのキャッシュクラスター (リードレプリカを含む) のリストを取得するには、標準の DescribeCacheClusters API を使用するか、Amazon ElastiCache …

psql から Redshift に接続する際にメッセージを英語で出力する

AWS

以下の環境変数をセット後に、psql を実行するよとい。 export LC_ALL=C 実行例 $ psql "host=redshift-cluster-4.********.ap-northeast-1.redshift.amazonaws.com user=awsuser dbname=dev port=5439" psql (13.4、サーバ 8.0.2) SSL 接続 (プロトコル: TL…