tag:crieit.net,2005:https://crieit.net/tags/cockroachdb/feed 「cockroachdb」の記事 - Crieit Crieitでタグ「cockroachdb」に投稿された最近の記事 2019-05-17T16:36:07+09:00 https://crieit.net/tags/cockroachdb/feed tag:crieit.net,2005:PublicArticle/14991 2019-05-17T15:25:09+09:00 2019-05-17T16:36:07+09:00 https://crieit.net/posts/cockroachdb-laravel-laravel-cockroachdb cockroachdb-laravel を使えば laravel で cockroachdb 使えるみたい <h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1> <p>先先日、こちらの場をお借りして、稚拙な<strong>できませんでしたレポート</strong>に過ぎない <a href="https://crieit.net/posts/laravel-cockroachdb">laravel で cockroachdb を使おうとして惜しくも断念</a> を書かせていただいたのですが、だら様の日々の SEO の強化の御尽力おかげと思うのですが <strong>laravel</strong> と <strong>cockroachdb</strong> で QWANT で検索したら他の良記事を差し置いて僭越にも2番めにでてきてました、なんかちょっとうれしいです</p> <p><a href="https://crieit.now.sh/upload_images/2f92048d04f916d713e08a3ffb584c705cde5025686a6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2f92048d04f916d713e08a3ffb584c705cde5025686a6.png?mw=700" alt="スクリーンショット 2019-05-17 11.17.45.png" /></a></p> <p>ところで検索筆頭の <strong>cockroachdb-laravel</strong> ってどういうプロジェクトなんでしょう?</p> <h1 id="cockroachdb-laravel"><a href="#cockroachdb-laravel">cockroachdb-laravel</a></h1> <p><a target="_blank" rel="nofollow noopener" href="https://github.com/nbj/cockroachdb-laravel">cockroachdb-laravel</a> は、laravel で使うために必要な cockroachdb の定義をしてくれているみたいです(laravel の内部をよくしらないので、なんとなくコードを眺めててそんな印象をもった、という程度で、あまり自信ないです)<br /> つかってみると、ちゃんと migrate できて、larabel のユーザ認証がうごきだしました<br /> <a href="https://crieit.now.sh/upload_images/2e55a1a3dfd2162d22cc27d4529ea46b5cde51ed4b0f4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2e55a1a3dfd2162d22cc27d4529ea46b5cde51ed4b0f4.png?mw=700" alt="スクリーンショット 2019-05-17 14.51.50.png" /></a><br /> ちゃんと cockroachdb にユーザができてる!うれしい<br /> <a href="https://crieit.now.sh/upload_images/9db4ff525980acf49fd56dd59dba591b5cde522102695.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9db4ff525980acf49fd56dd59dba591b5cde522102695.png?mw=700" alt="スクリーンショット 2019-05-17 14.54.17.png" /></a></p> <p>うれしいので速攻で星をつけました ^^/</p> <h1 id="ちょっとした問題"><a href="#%E3%81%A1%E3%82%87%E3%81%A3%E3%81%A8%E3%81%97%E3%81%9F%E5%95%8F%E9%A1%8C">ちょっとした問題</a></h1> <p>こちらの <a target="_blank" rel="nofollow noopener" href="https://github.com/nbj/cockroachdb-laravel/issues/19">issue</a> にもあがってますが、migrate する時に "id なんてないよ" って言われて migrate が1回失敗する現象がありますが、シレっと再度 migrate すると普通に db ができます</p> <h1 id="その後"><a href="#%E3%81%9D%E3%81%AE%E5%BE%8C">その後</a></h1> <p>で、ログインしようとすると「そんなクレデンシャルないよ」とログインできない現象が私の所では出ていて、cockroachdb の Metrics みてるとそもそも query も来てないので、そもそも誰が原因なのか(laravel なのか、cockroachdb なのか、はたまた私の環境構築の問題なのか)今の所、ちょっとわからないです</p> Dr. Takeyuki Ueda tag:crieit.net,2005:PublicArticle/14988 2019-05-15T22:09:28+09:00 2019-05-17T09:48:16+09:00 https://crieit.net/posts/laravel-cockroachdb laravel で cockroachdb を使おうとして惜しくも断念 <h1 id="要約"><a href="#%E8%A6%81%E7%B4%84">要約</a></h1> <p>laravel でなにか作った後の DB の面倒を見るのがめんどくさいです。なので<a target="_blank" rel="nofollow noopener" href="https://www.cockroachlabs.com/">cockroachdb</a> みたいに手のかからない DB が使えれば嬉しいです<br /> postgress 互換なので postgress 用の laravel 設定を流用して使えないかなとおもってためしてみたのですが、結論からいうと <a target="_blank" rel="nofollow noopener" href="https://github.com/cockroachdb/cockroach/issues/32098">この issue</a> が解決されないと、laravel で cockroachdb つかうの無理っぽいです</p> <h1 id="cockroachdb を使うための準備"><a href="#cockroachdb+%E3%82%92%E4%BD%BF%E3%81%86%E3%81%9F%E3%82%81%E3%81%AE%E6%BA%96%E5%82%99">cockroachdb を使うための準備</a></h1> <p>laravel の database.php の pgsql の connections を見るとパスワード認証にしか対応していないので、証明書でログインするように変更します</p> <h2 id="laravel のコードの変更"><a href="#laravel+%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E5%A4%89%E6%9B%B4">laravel のコードの変更</a></h2> <pre><code class="php:">/* 'pgsql' => [ 'driver' => 'pgsql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '5432'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'prefix' => '', 'prefix_indexes' => true, 'schema' => 'public', 'sslmode' => 'prefer', ], */ // refer https://gist.github.com/tigusigalpa/2d1ec6e258ed96221abf9679622d274a 'pgsql' => [ 'driver' => 'pgsql', # 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '26257'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), # 'password' =&gt; env('DB_PASSWORD', ''), 'charset' => 'utf8', 'prefix' => '', 'prefix_indexes' => true, 'schema' => 'public', 'sslmode' => 'require', 'sslrootcert' => env('DB_SSLROOTCERT', ''), 'sslcert' => env('DB_SSLCERT', ''), 'sslkey' => env('DB_SSLKEY', ''), ], </code></pre> <p>ついでに port も cockroachdb のデフォルトの <strong>26257</strong> に変更しておきます<br /> <strong>sslmode</strong> は <strong>require</strong> に変更して、あと <strong>sslrootcert, sslcert, sslkey</strong> を <strong>.env</strong> から読めるように追加しました</p> <h2 id="cockroachdb 側の対応"><a href="#cockroachdb+%E5%81%B4%E3%81%AE%E5%AF%BE%E5%BF%9C">cockroachdb 側の対応</a></h2> <p>laravel で使うための db をつくって、laravel で使うユーザに全権を Grant しておきます</p> <h2 id="migrate してみる"><a href="#migrate+%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B">migrate してみる</a></h2> <p>migrate してみると、cockroach にクエリーがきてます o(´∀`)o</p> <p><a href="https://crieit.now.sh/upload_images/cdac409405dbcc3afe4d21abca16ba085cdc0c351ba08.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cdac409405dbcc3afe4d21abca16ba085cdc0c351ba08.png?mw=700" alt="スクリーンショット 2019-05-15 21.54.17.png" /></a></p> <p>なんだ、簡単だったな、とおもったらぬか喜びでした<br /> created_at, pdated_at あたりがエラーになってます</p> <pre><code class="bash:">php artisan migrate Migrating: 2014_10_12_000000_create_users_table Illuminate\Database\QueryException : SQLSTATE[0A000]: Feature not supported: 7 ERROR: syntax error: unimplemented: unimplemented at or near "zone" DETAIL: source SQL: create table "users" ("id" bigserial primary key not null, "name" varchar(255) not null, "email" varchar(255) not null, "email_verified_at" timestamp(0) without time zone null, "password" varchar(255) not null, "remember_token" varchar(100) null, "created_at" timestamp(0) without time zone null, "updated_at" timestamp(0) without time zone null) ^ HINT: See: https://github.com/cockroachdb/cockroach/issues/32098 (SQL: create table "users" ("id" bigserial primary key not null, "name" varchar(255) not null, "email" varchar(255) not null, "email_verified_at" timestamp(0) without time zone null, "password" varchar(255) not null, "remember_token" varchar(100) null, "created_at" timestamp(0) without time zone null, "updated_at" timestamp(0) without time zone null)) </code></pre> <p>なんか親切な <strong>HINT</strong> がでてるので見てみると、ようは cockroachdb が <strong>timestamp の精度指定</strong> にまだ対応してないのが原因みたいです<br /> この<a target="_blank" rel="nofollow noopener" href="https://github.com/cockroachdb/cockroach/issues/32098">issue</a> はそもそも symfony で使おうとしてあがってきたみたいですけど、symfony でダメなら当然、laravel でもだめですね orz</p> <h1 id="結論"><a href="#%E7%B5%90%E8%AB%96">結論</a></h1> <p><a target="_blank" rel="nofollow noopener" href="https://github.com/cockroachdb/cockroach/issues/32098">issue</a> が fix されるまでもう少し待とうかなと</p> Dr. Takeyuki Ueda tag:crieit.net,2005:PublicArticle/14980 2019-05-12T15:32:39+09:00 2019-05-12T17:29:25+09:00 https://crieit.net/posts/cockroachdb cockroachdb のクラスタを作ろうとしてジタバタした記録 <h1 id="Insecure な clustering にさえハマる"><a href="#Insecure+%E3%81%AA+clustering+%E3%81%AB%E3%81%95%E3%81%88%E3%83%8F%E3%83%9E%E3%82%8B">Insecure な clustering にさえハマる</a></h1> <p>host1 で cockroach が無事に起動する事を確認して、host2 でも確認、問題なさそう<br /> で、host2 の node2 を host1 の node1 のクラスタに join させようとするのだけど、無視してしれっと別のクラスタをつくって stand alone で起動してくださる</p> <p>全然、理由がわからない、<a target="_blank" rel="nofollow noopener" href="https://www.cockroachlabs.com/docs/stable/troubleshooting-overview.html">Trouble Shooting</a>を漁っても、ググってもわからない、なんで他のみんなはこんな目にあってないんだろ?<br /> 半泣きで <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/56086595/cant-add-node-to-the-cockroachde-cluster">SO</a>に助けを求めたら、速攻で「<strong>node2のcockroach-data消しとかないとダメだよ</strong>」と教えてもらう、Marc さんありがとう、私は人の世の優しさで生かされている!</p> <h1 id="Secure な clustering には当然ハマりそう"><a href="#Secure+%E3%81%AA+clustering+%E3%81%AB%E3%81%AF%E5%BD%93%E7%84%B6%E3%83%8F%E3%83%9E%E3%82%8A%E3%81%9D%E3%81%86">Secure な clustering には当然ハマりそう</a></h1> <p>Insecure な clustering でさえハマってググりまくるという希有な経験をさせていただいておりました私は、その過程で皆様が Secure な cluster を作ろうとしてハマりまくってるのをすでに知っていたので、ビビリながら try</p> <p><strong>Deploy</strong> の <strong>Manual Deployment</strong> の <a target="_blank" rel="nofollow noopener" href="https://www.cockroachlabs.com/docs/stable/deploy-cockroachdb-on-premises.html"><strong>On-Premises</strong></a>を何度も(普通なら1度で十分なんでしょうけど^^;;;)読んで、だんだんと分かってくる</p> <ol> <li>deploy する対象は <strong>certs</strong> folder であって、my-safe-directory は deploy しないでどこかにかくしておく、ここには ca.key ができる</li> <li>前述の ca.key を使って certs 配下に証明書をいくつかつくるのだけど <ul> <li>クラスタ全体で同じものを使う: ca.crt, client.root.crt</li> <li>node ごとに別のものを使う: node.crt</li> </ul></li> </ol> <p>ということをドキュメントの<strong>行間から読み取る</strong>のが物凄く難しかったですが、これがわかればハマりポイントはなさそう...</p> <h2 id="なのにハマる"><a href="#%E3%81%AA%E3%81%AE%E3%81%AB%E3%83%8F%E3%83%9E%E3%82%8B">なのにハマる</a></h2> <p>node1 は起動するのに node2 が join しないどころかリトライを繰り返して起動さえもしない<br /> log (cockroach-data/logs/cockroach.log) をみると(クラスタ作り直した時に消しちゃったので記憶で書いてますが)host 1 の IP アドレスと host2 のIPアドレスが「対象が違う」というようなエラーメッセージ</p> <p>実は、host1 に node2 用の証明書を間違えておいてたというおマヌなのが原因だったんですが、それにしても node1 はシレっと起動して、node2 の起動がエラーになるあたり、cockroachdb 恐るべし</p> <h1 id="番外編:admin UI にログインできない"><a href="#%E7%95%AA%E5%A4%96%E7%B7%A8%EF%BC%9Aadmin+UI+%E3%81%AB%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84">番外編:admin UI にログインできない</a></h1> <p>admin UI にログインするためのカウントを作る SQL がドキュメントとか、admin UI のページにでてるんですが、これをコピーして sql client にペーストすると<strong>パスワードの前後のシングルクオートが化けて</strong>アカウントつくってくれるのでログインできません ^^;;;<br /> これも原因に気づくまでずいぶん時間かかったんですけど全く<strong>知育玩具</strong>かと思うぐらい昨日今日で頭がよくなってきた気がする o(´∀`)o</p> <h1 id="感想"><a href="#%E6%84%9F%E6%83%B3">感想</a></h1> <p>名前から<strong>ゴキブリ</strong>なみの<strong>しぶとさ</strong>を期待してたんですけど<strong>絶滅危惧種</strong>育ててるのかと思うほど大変だったですが...</p> <p>てか、立ち上がっちゃえば核戦争後まで生き延びるほどしぶといクラスタだと期待しつつ次号につづく</p> Dr. Takeyuki Ueda