2017年9月13日水曜日

Redisの水平分割をうまくやるジャストアイデア

Redisをのせているサーバのリソースが逼迫したときに取る戦略の1つとして、水平分割という方法がある。
この水平分割は、データの偏りや、再分割をうまくやろうとすると困難が伴い、泥臭く運用をやる必要がある。

しかし、最初から、クライアントコード上で水平分割の数を決め打ちして扱うと楽になるのではないか?と考えた。
たとえば、サービス開始時には、Redisに将来分割するであろう超大量のユーザIDをキーにしたデータを格納するとして、クライアントは、キーを32分割して扱うようにし、それをすべて1つのRedisに入れてしまえば良い。

メリット:分割しやすくなる。
Redisサーバ数を1から2へ分割するときは、まず、Redis AからRedis Bへレプリケーションを構築して、クライアント上で32分割しておいたキーを、16づつ振り分ける設定をして、レプリケーションを停止する。そうするだけで、サーバリソースをスケールアウトできる。余計になったキーは、あとでバッチで消せばよい。
ノードの負荷の偏りが予想されるときは、Redis Aに20、Redis Bに12を割り当てる、などといったこともできる。

デメリット:最初に決めたRedis分割数までスケールアウトさせたら、その先は泥臭くがんばる必要がある。そうならないように、最初に分割数を多めの数、たとえば、128などに決めておけばよいはず。
分割するとき、1人のユーザIDのデータ更新頻度がレプリケーションのレイテンシを超えるとデータの整合性に不安ができる。アプリケーションによるが、数msで1人の人間がガンガンデータを更新してくることがあるかどうか?この点をクリアできるか、検討する必要がある。

2017年8月28日月曜日

Gitの脆弱性 ( CVE-2017-1000117 ) CentOS yum update

CentOSのyumで最新版のGitをインストールして、Gitの脆弱性 ( CVE-2017-1000117 ) を解決します。
IUSリポジトリを利用して、Gitの最新バージョンをインストールする方法と、公式パッケージのセキュリティアップデート版をインストールする方法の、2通りがあります。
以下、Gitの脆弱性の概要です。
gitクライアント上での任意のコマンド実行の可能性 重要度 - Important
Gitでの"ssh"URLハンドリングにshellコマンドインジェクションの欠陥が見つかりました。
これを利用して、悪意のあるレポジトリや悪意のあるコミットを行われたをレポジトリに対して"clone"アクションをGitクライアントで実行した際に、Gitクライアントを実行したユーザの権限でshellコマンドを実行される可能性が有ります。
https://oss.sios.com/security/git-security-vulnerabiltiy-20170813

IUSリポジトリを利用する場合
https://ius.io/GettingStarted/
Gitの最新バージョンを提供しています。

IUSリポジトリを設定
CentOS 6
# rpm -Uvh https://centos6.iuscommunity.org/ius-release.rpm
CentOS 7
# rpm -Uvh https://centos7.iuscommunity.org/ius-release.rpm
既存のGitを削除して、IUSリポジトリからGitをインストール。
# yum remove git
# yum --enablerepo=ius install git2u
# git --version
git version 2.14.1


CentOS公式アップデートを利用する場合
https://lists.centos.org/pipermail/centos-announce/2017-August/022519.html
2017/8/17に、CentOS公式がCentOS 6向けのアップデートパッケージを発表しています。Gitのバージョンは1.7.1のセキュリティアップデートになります。

サーバにインストールされているGitバージョンを確認。古いバージョンだった。
# yum list installed | grep git.x86_64
git.x86_64                         1.7.1-4.el6_7.1                  @base
アップデートをかける。
# yum update git
バージョンが更新されていることを確認。
# yum list installed | grep git.x86_64
git.x86_64                         1.7.1-9.el6_9                    @updates

2017年8月7日月曜日

builderscon tokyo 2017 スタッフしてきたのでインスタで振り返る

スタッフパスを頂いたぞ! #builderscon

Takeshi Yakoさん(@takeshiyako)がシェアした投稿 -

アイコンはGitHubのアイコンを使っていただきました。リアル顔とアイコン画像とIDが一致するアイディア。いいですね。

入り口案内。わりふり決定です。 #builderscon

Takeshi Yakoさん(@takeshiyako)がシェアした投稿 -

前夜祭のチーム分けで、入り口案内係になる。4人いたので、1階と2階で割り振ったの図。 @kamadango さんのノート。一瞬でわかりやすく書く能力。

受付準備中です。お待ちしております。 #builderscon

Takeshi Yakoさん(@takeshiyako)がシェアした投稿 -

ノベルティ詰めの作業がなかったので、準備に余裕があった。

前夜祭終了ですね。ありがとうございました。#builderscon

Takeshi Yakoさん(@takeshiyako)がシェアした投稿 -

さくらインターネットの鷲北さんの話がうまかった。当時、ブロックストレージ障害は自分も被ったので当事者感があった。あれはマジでつらい出来事でしたね。。データベースサーバが吹っ飛んで消えてなくなった記憶がある。バックアップとっておいてよかった。

塾生なんですね。

Takeshi Yakoさん(@takeshiyako)がシェアした投稿 -

モヤモヤPOINT。学生と言わない。

トラックC部屋のリーダーになりました。 よろしくお願いいたします! #builderscon

Takeshi Yakoさん(@takeshiyako)がシェアした投稿 -

のんびりスタッフやるかー。と思ってきたら、リーダーだった。完全に油断していました。大きなトラブルはなかったと思われます。頑張った。同部屋スタッフの能力の高さのおかげです。@pastak さんMC力、高し。

CM中。 #builderscon

Takeshi Yakoさん(@takeshiyako)がシェアした投稿 -

なんかこの兄弟、ライブで見たことあるぞと思って調べたら 上鈴木兄弟 だった。思ったよりトラックがかっこ良くて、ついつい音量上げてしまった。うるさかったらすいません。

@慶應義塾大学

Takeshi Yakoさん(@takeshiyako)がシェアした投稿 -

けっこう濃厚です。