5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ProxySQL を使って EC2 をプロキシサーバとして利用し、特定の IP から RDS にアクセスする

Last updated at Posted at 2019-05-10

背景

社内の RDS の一つに、一時的に特定の外部の固定IPからアクセスできるようにしたい。
そこで、特定の外部の固定IPからのみアクセス可能な EC2 に ProxySQL を設定し、そこ経由で RDS にアクセスしたい。
(今回は MySQL)

AWS マネジメントコンソール上での準備

VPC の用意

VPCを用意しておきます。

RDS の準備

RDS インスタンスを立ち上げる。
インバウンドには、後述する EC2 のセキュリティグループを設定。
port は 3306 を空けておく。
ここでは説明のため、↓のようなユーザ/パスを設定することにする。

user: app
password: pass

EC2 の準備

今回は Amazon Linux を想定。
インバウンドとして、接続してくる外部の固定IPを設定。
port は 22(SSH用)と 6033(proxy用) を空けておく。

EC2 上での操作

RDS インスタンスに接続してテーブルを作成

ユーザは AWS マネジメントコンソールで RDS インスタンスを作る時に作られている。

$ sudo yum -y install mysql mysql-devel
$ mysql -h [RDSのエンドポイント] -u [マスターユーザー名] -p
// RDSインスタンスへの接続
Enter password:
// テーブル作成
CREATE TABLE users(
    id INT(11) AUTO_INCREMENT NOT NULL, 
    name VARCHAR(30) NOT NULL ,
    PRIMARY KEY (id));

ProxySQL をインストール

↓ファイルを開いて

$ vi /etc/yum.repos.d/proxysql.repo

↓を書き込む

[proxysql_repo]
name= ProxySQL YUM repository
baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.0.x/centos/latest
gpgcheck=1
gpgkey=https://repo.proxysql.com/ProxySQL/repo_pub_key

インストール

$ yum install proxysql

ProxySQL 管理画面での操作

/etc/proxysql.cnf の設定

mysql_variables=
{
  admin_credentials="admin:admin"
  mysql_ifaces="127.0.0.1:6032;/tmp/proxysql_admin.sock"
  threads=1
  interfaces="0.0.0.0:6033;"
}

ProxySQL 起動

# 止めるときは stop
$ sudo service proxysql start

ProxySQL 管理画面から proxy 設定

$ mysql -u admin -padmin -h 127.0.0.1 -P6032 --prompt='Admin> '
# サーバ情報とユーザを作成
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,[RDSのエンドポイント],3306);
INSERT INTO mysql_users (username,password) VALUES ('app','pass');

# RUNTIME へ適用
LOAD MYSQL SERVERS to RUNTIME;
LOAD MYSQL USERS TO RUNTIME;

# 永続化
SAVE MYSQL SERVERS TO DISK;
SAVE MYSQL USERS TO DISK;

固定IPを持つ外部からの操作

mysql -h [EC2のエンドポイント]  -u app -ppass -P6033

これで接続できます。
先ほど作ったテーブルも確認できるはず。

参考ページ一覧

https://github.com/sysown/proxysql/wiki
https://confluence.sharuru07.jp/pages/viewpage.action?pageId=2883888

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?