EC2のスワップ領域について IT by NHM - 2021-04-072021-04-07 スワップ領域なんてものは普通はある程度は設定されているだろうって思いがち。 たまたまTOPで確認していたらswapが0なんですけど! free -m total used free shared buff/cache available Mem: xxx xxx xxx 0 xxx xxx Swap: 0
CPUベースラインのインスタンスについて完全に勘違いしていた件 IT by NHM - 2021-02-172021-03-09 CPU使用率80%程度までは頑張ってくれると勘違いしていた。。。 バーストパフォーマンスインスタンスの CPU クレジットとベースライン使用率https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/burstable-credits-baseline-concepts.html T系インスタンスの計算式 Amazon Lightsailでのインスタンスのバースト容量の表示https://lightsail.aws.amazon.com/ls/docs/ja_jp/articles/amazon-lightsail-viewing-instance-burst-capacity AWS lightsailの計算式(google doc) 負荷の急増に対応できる B シリーズ仮想マシンのサイズhttps://docs.microsoft.com/ja-jp/azure/virtual-machines/sizes-b-series-burstable Azure VMのBシリーズ計算式(google doc) この人達はアレだ。携帯電話の速度制限に似ている部分がある(通信量が制限超えたら速度制限がかかる。通信量が最低速度以下だったら余裕が溜まっていく的な)。 ベースライン:通信速度制限バーストモード:通信制限がかかっていない状態AWSのT系インスタンスのアンリミテッド:前借り + 前借りした分返せなかったら後払い。
EPEL(Extra Packages for Enterprise Linux) IT by NHM - 2021-02-082021-02-08 CentOS sudo yum install epel-release Amazon Linux sudo amazon-linux-extras install epel
EC2のapacheにSSL証明書を設定する。 IT by NHM - 2021-02-042021-05-25 いつものごとくamazonのドキュメント チュートリアル: Amazon Linux 2 に SSL/TLS を設定するhttps://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/SSL-on-amazon-linux-2.html ステップ 1: サーバーで TLS を有効にする apacheが必要らしいのでインストールする。80,443をセキュリティグループで空けておくこと。 sudo yum install -y httpd 有効になっているかの確認 sudo systemctl is-enabled httpd disabled 有効化 sudo systemctl start httpd && sudo systemctl enable httpd Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. インスタンスを最新にして、モジュールインストールする。 sudo yum update -y sudo yum install -y mod_ssl テスト用証明書を作成する。 cd /etc/pki/tls/certs sudo ./make-dummy-cert localhost.crt コメントアウトする。 vi /etc/httpd/conf.d/ssl.conf #SSLCertificateKeyFile /etc/pki/tls/private/localhost.key apache再起動 sudo systemctl restart httpd WEBブラウザでアクセスできることを確認する。Chromeだとページ表示できないかもしれないのでsafariやfirefox使おう。 epelインストール sudo amazon-linux-extras install epel -y 自動更新の設定をする。ついでにapache再起動も設定しておく。 cat /etc/crontab 39 1,13 * * * root certbot renew --no-self-upgrade * 3 * * * root systemctl restart httpd Certbot をインストールして実行する sudo wget -r --no-parent -A 'epel-release-*.rpm' http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/ sudo rpm -Uvh dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-*.rpm sudo yum-config-manager --enable epel* sudo yum repolist all /etc/httpd/conf/httpd.confの編集 sudo vi /etc/httpd/conf/httpd.conf Listen 80の後に追加 <VirtualHost *:80> DocumentRoot "/var/www/html" ServerName "example.com" ServerAlias "www.example.com" </VirtualHost> sudo
nvmをEC2にインストールする IT by NHM - 2021-02-01 nvmhttps://github.com/nvm-sh/nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 13527 100 13527 0 0 455k 0 --:--:-- --:--:-- --:--:-- 455k => Downloading nvm from git to '/root/.nvm' => Cloning into '/root/.nvm'... remote: Enumerating objects: 333, done. remote: Counting
systemctlでvernemqが立ち上がらない IT by NHM - 2021-01-292021-02-17 困った時のジャーナル。epmd@0.0.0.0.socketが悪さしてるらしい。 journalctl -xe 1月 29 07:44:26 nhmasaaazu systemd[1]: Unit vernemq.service entered failed state. 1月 29 07:44:26 nhmasaaazu systemd[1]: vernemq.service failed. 1月 29 07:44:59 nhmasaaazu sudo[9968]: ec2-user : TTY=pts/0 ; PWD=/tmp ; USER=root ; COMMAND=/bin/systemctl start vernemq 1月 29 07:44:59 nhmasaaazu sudo[9968]: pam_unix(sudo:session): session opened for user root by ec2-user(uid=0) 1月 29 07:44:59 nhmasaaazu polkitd[1237]: Registered Authentication Agent for unix-process:9969:1924499 (system bus name :1.346 1月 29 07:44:59 nhmasaaazu systemd[1]: Cannot add dependency job for unit epmd@0.0.0.0.socket, ignoring: Unit not found. vernemq.service sudo cat /etc/systemd/system/vernemq.service # systemd unit file [Unit] Description=VerneMQ Server After=network.target epmd@0.0.0.0.socket Wants=network.target epmd@0.0.0.0.socket とりあえずコメントアウトしてから起動させてみる。 sudo systemctl daemon-reload sudo systemctl start vernemq うまくいったのでコメントアウトをやめて起動させてみる。成功! vernemq startで起動できるということはAfterとWantsのepmdは必要ないと思われる。 rebootしてもvernemq起動できてたので初回systemctl起動させるときだけに問題があるのか?。
EC2にMQTTブローカー(vernemq)を設定する。 IT by NHM - 2021-01-292021-02-17 作業用ディレクトリに移動してコンパイルするためのライブラリをインストールする。 cd /tmp sudo amazon-linux-extras install -y epel sudo yum -y install git openssl openssl-devel gcc-c++ unixODBC unixODBC-devel fop ncurses ncurses-devel wxGTK-devel leveldb-devel snappy-devel 今回はerlangをコンパイルするか下記からダウンロードすることも可能 Download Erlang Packageshttps://www.erlang-solutions.com/resources/download.html ソース取得して展開してコンパイルしてインストール。 wget http://erlang.org/download/otp_src_23.2.tar.gz tar -zxf otp_src_23.2.tar.gz cd otp_src_23.2/ ./configure make sudo make install amazon linux 2向けのバイナリをダウンロードしてインストールする。 cd /tmp wget https://github.com/vernemq/vernemq/releases/download/1.11.0/vernemq-1.11.0.amzn2.x86_64.rpm sudo yum install -y vernemq-1.11.0.amzn2.x86_64.rpm リソースの制限を確認しておく(open files)。 ulimit -aS core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i)
Amazon-Linux-2でホスト名を設定する IT by NHM - 2021-01-292021-02-17 インスタンス起動作成した時点ではIPアドレスが表示されている。 これでは正直わかりにくいのでhostnamectlコマンドを利用して設定する。 sudo hostnamectl set-hostname ホスト名 hostname 再度ログインするかsudo su などでユーザ変更すると確認できる。 Amazon Linux インスタンスのホスト名を変更するhttps://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/set-hostname.html
AWSのEC2にDockerをインストールする IT by NHM - 2021-01-282021-02-17 dockerはyumで普通にインストールする。 sudo yum install -y docker docker-composeのインストール方法はHPに丁寧に記載されている。 Docker Compose のインストールhttps://docs.docker.jp/compose/install.html 要約するとLinuxには下記の三つ。 Linux における Compose のインストールpip を利用したインストールコンテナとしてのインストール 1がおすすめ。理由は下記 2:python3入れなくちゃいけないのが面倒3:dockerサービス立ち上げておく必要がある。 3でdocker立ち上げてないとdocker-compose --version時にエラーでる。 docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?. See 'docker run --help'. docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/create: dial unix /var/run/docker.sock: connect: permission denied. というわけで下記で実行 $ sudo curl -L https://github.com/docker/compose/releases/download/1.28.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose $ docker-compose --version docker-compose version 1.28.2, build 67630359