Tech Sketch Bucket of Technical Chips by TIS Inc.

Wakame-vdc+OpenVNet環境構築時の確認手順

Pocket

Wakame-vdc+OpenVNet環境の構築を行ったが、参考となる情報が少なく、設定の不備などで上手く動かない場合の原因調査に苦労することが多かった。基本的にこちらの手順を参照頂ければ問題なく構築できるはずだが、インストールの各工程で設定に問題が無いかを確認することが望ましい。本記事は、Wakame-vdc+OpenVNetの環境構築時の問題の切り分けと対処方法を参考資料としてまとめてみたものとなる。

本記事で利用した検証環境の構成は以下となる。

wakame-vdc

Wakame-vdc+OpenVNetを構成する各パッケージの関係図は以下となる。

wakame-vdc

openvswitchインストール結果確認

◆openvswitchの設定確認

各コマンドは指定がない限り、Wakame-vdc+OpenVNetサーバ内で実行する。

1. eth0-br0の接続およびswitch_managerのlisten portが正しく設定されていることを確認する。
$ sudo ovs-vsctl show

2. OpenFlowTableにインターフェースの情報が設定されていることを確認する。
dpidとLOCAL(br0)のMACアドレスがbr0の設定と一致していることも確認する。
$ sudo ovs-ofctl show br0

3. OpenFlowTableのFlowの情報が設定されていることを確認する。
正常に動作していれば、以下の出力が行われ、Flow情報がなにも登録されていないことがわかる。
$ sudo ovs-ofctl -O OpenFlow13 dump-flows br0

4. Wakame-vdcサーバ内でbr0に付与したIPに対してpingを実行し通信できることを確認する。 $ ping -c 1 10.255.202.69

5. br0に対するアクセス許可のFlow情報を登録する。

6. 5.の処理結果を確認する。br0=LOCALに対するactionsがALLになっている。
$ sudo ovs-ofctl -O OpenFlow13 dump-flows br0

7. 外部のサーバからpingを実行し、br0に対して正常に通信が行えれることを確認する。

◆openvswitchの設定確認でエラーが発生する場合の確認方法

1.openvswitchのサービスが起動しているかを確認する。
サービスのステータスを確認して、pidが2行表示されればopenvswitchは起動している。
$ sudo service openvswitch status

2.openvswitchのswitch_managerポートが起動しているかを確認する。
6633/tcpのポートでswitch_managerがLISTENしていたらswitch_managerは正常に起動している。 $ sudo netstat -antp | grep 6633

3.br0を経由して外部ネットワークにアクセスできるかを確認する。
br0と同一セグメントのサーバ、ネットワーク機器にpingを実行して接続できたらbr0の起動およびIPアドレスの付与は正常に行えている。
$ ping -c 1 10.255.202.101

pingがエラーとなる場合、eth0とbr0の設定に問題がある可能性が高い。/etc/sysconfig/network-scripts以下のifcfg-eth0 / ifcfg-br0設定ファイル(ifcfg-eth0 / ifcfg-br0)を確認する必要がある。

4.iptablesを停止して外部端末から通信が行えるかを確認する。
以下のコマンドでiptablesを停止後に外部サーバからpingを実行する。
$ sudo service iptables stop

iptablesが停止した状態でpingの通信が成功した場合は、iptablesの設定に問題がある可能性が高い。
iptablesの設定はminimal install標準で問題無いので以下の状態との差異を確認する必要がある。
**$ sudo cat /etc/sysconfig/iptables**<BR>


OpenVNetインストール結果確認

◆OpenVNetの設定確認

1.datapathの設定を確認する。dipdがbr0の設定と一致していることを確認する。
$ vnctl datapaths show

2.networkの設定を確認する。br0を経由して接続するネットワークセグメントが定義されていることを確認する。
$ vnctl networks show

3. interfacesの設定を確認する。
まだ仮想マシンが生成されていないので、仮想ネットワークインターフェースの情報は登録されていない。
$ vnctl interfaces show

4. OpenFlowTableのFlowの情報が設定されていることを確認する。
登録されたFlowは全て削除され、60件ほどの"drop"の処理を行うFlowが追加される。
$ sudo ovs-ofctl -O OpenFlow13 dump-flows br0

5. OpenFlowTableのbr0(LOCAL)に対するアクセス許可のFlowの情報を登録する。 設定されていることを確認する。
$ sudo ovs-ofctl add-flow br0 in_port=LOCAL,actions=all
$ sudo ovs-ofctl add-flow br0 out_port=LOCAL,actions=all
$ sudo ovs-ofctl -O OpenFlow13 dump-flows br0 | grep LOCAL

6. 外部のサーバからpingを実行し、br0に対して正常に通信が行えれることを確認する。

◆OpenVNetの設定確認でエラーが発生する場合の確認方法

1.OpenVNetのサービス起動後、vnet-vnmgrがすぐに停止する場合
OpenVNetの各サービスは/var/log/openvnetフォルダ以下にログを出力するが、root以外のユーザで書き込みを行うため、otherに書き込み権限が必要となる。ログファイルにも以下が出力されている。(書き込み権限が無いというエラーは書き込まれている)
$ sudo cat /var/log/openvnet/webapi.log

ログローテーションなどでログファイルの置き換えを行った場合は、書き込み権限を付与するようにする対策が必要となる。
$ ls -l /var/log/openvnet/*.log

2.vnetctlコマンドがエラーになる場合
$ vnctl datapaths show

基本的にOpenVNetのサービスが起動していない状況で発生する。起動状況は以下のコマンドで確認できる。

5. 外部のサーバからbr0に対してpingが到達しない場合 OpenVNet(のvnet-vnaのサービス)を起動すると、FlowTableが更新され、br0への透過設定が削除されてしまう。
以下のコマンドを実行し、br0に対するFlowTableを作成することで復旧できる。
$ sudo ovs-ofctl add-flow br0 in_port=LOCAL,actions=all
$ sudo ovs-ofctl add-flow br0 out_port=LOCAL,actions=all

6. vnctl datapaths delコマンドで削除したはずなのに、vnctl datapaths add でDuplicateUUIDのエラーが発生する

$ vnctl datapaths del dp-front

$ vnctl datapaths add --uuid dp-front --display-name front --dpid 0x0000020100000001 --node-id vna

OpenVNetのvnctlによる削除は、レコードに削除フラグが設定されるだけで、データ自体は削除されない。そのために同一のuuidで登録しようとするとプライマリーキー重複で必ずエラーとなってしまう。
MySQLのDB上のデータをSQLで削除する方法でも解消できるが、複数のテーブルに対して整合性を確保しながら実施する必要があり、難易度は高めである。

対策案としては、以下が考えられる。
案1:新たなuuidに変更して新規に登録する。
案2:OpenVNetのDBを一旦、dropし新規で再作成し、必要なデータを再登録する。

OpenVNetのDBを再構築する手順は以下となる。
(1) OpenVNetのサービスを停止する。
$ sudo initctl stop vnet-vnmgr
vnet-vnmgr stop/waiting
$ sudo initctl stop vnet-webapi
vnet-webapi stop/waiting
$ sudo initctl stop vnet-vna
vnet-vna stop/waiting

(2) OpenVNetのテーブルを再作成(drop→create→init)する。
$ export PATH=/bin:/opt/axsh/openvnet/ruby/bin:$PATH
$ cd /opt/axsh/openvnet/vnet
$ bundle exec rake db:drop
Database "vnet" dropped
$ bundle exec rake db:create
$ bundle exec rake db:init

(3) OpenVNetのサービスを起動する。
$ sudo initctl start vnet-vnmgr
vnet-vnmgr start/running, process 4726
$ sudo initctl start vnet-webapi
vnet-webapi start/running, process 4729
$ sudo initctl start vnet-vna
vnet-vna start/running, process 4782

(4) datapaths/networksの情報を再登録する。
$ vnctl datapaths add --uuid dp-front --display-name front --dpid 0x0000020100000001 --node-id vna
$ vnctl networks add --uuid nw-front --display-name front --ipv4-network 10.255.202.0 --ipv4-prefix 24 --network-mode virtual

ただし、この方法の場合、仮想インターフェースの情報が消失してしまうため、すでに仮想マシンが稼働している状態では使用できない。既に仮想マシンが生成されている場合は、uuidを変更した新しいネットワークを作成し、仮想マシンのネットワークを付け替える処理で対処する形を取るべきである。


Wakame-vdcインストール結果確認

◆Wakame-vdcの起動時の設定確認

1.Wakame-vdcの各サービスが起動しているかを確認する。
$ sudo initctl status vdc-dcmgr
vdc-dcmgr start/running, process 5845
$ sudo initctl status vdc-collector
vdc-collector start/running, process 5852
$ sudo initctl status vdc-hva
vdc-hva start/running, process 5866
$ sudo initctl status vdc-webui
vdc-webui start/running, process 5887

2.Wekame-vdcのWebUIに接続し、ログインする。

wakame-vdc

wakame-vdc

3.Networkの画面で"install_guide_demo_data.sh"で設定したNetwork NameとIPv4 Networkが表示されていることを確認する。

wakame-vdc

4.Networkの画面でViewボタンをクリックし、"install_guide_demo_data.sh"で設定したNetwork IDとDHCPのIPレンジが設定されていることを確認する。
このNetwork IDとOpenVNet側のnetworksの登録のUUIDは必ず一致している必要がある。

wakame-vdc

5.Machine Imagesの登録を確認する。
"install_guide_demo_data.sh"で登録した場合、"ubuntu 14.04.3 passwd login enabled"のみが登録されている。

wakame-vdc

◆Wakame-vdcの仮想マシン作成時の設定確認

1.Lounch Instanceボタンをクリックし、仮想マシンを生成する。仮想マシンの生成時にはSSH Key PairとSerucirity Groupsの登録は必須となるので、事前に登録しておく。

wakame-vdc

2.Instancesの画面で仮想マシンが生成され、起動していることを確認する。付与されたIPアドレスも本画面で確認ができる。

wakame-vdc

3.外部サーバからpingを実行し、サーバへの通信が行えるかを確認する。
$ ping -c 1 10.255.202.32

4.外部サーバからsshで生成した仮想マシンに接続を行えるか確認する。
$ ssh 10.255.202.32 -l ubuntu

5.psコマンドで仮想マシンがkvm上で起動していることを確認する。
$ ps -ef | grep qemu-kvm | grep -v grep

6.ipコマンドで仮想NICが生成されていることを確認する。
$ ip addr

7.openvswitchに仮想NICが登録されていることを確認する。
$ sudo ovs-vsctl show

8.openvswitchのポートに仮想NICが接続されていることを確認する。
$ sudo ovs-ofctl show br0

9.OpenFlowTableにポート番号に対応したFlowが登録されていることを確認する。
$ sudo ovs-ofctl -O OpenFlow13 dump-flows br0

10.OpenVNetに仮想NICが登録されていることを確認する。
$ vnctl interfaces show

11.仮想マシンに提供する仮想ディスクと設定を格納したmetadataの生成を確認する。
仮想マシン名のフォルダが/var/lilb/wakame-vdc/instances以下に生成される。
$ cd /var/lib/wakame-vdc/instances/i-96nr6efm
$ ls -lh

以下がホスト名、IPアドレス等が記載されたmetadate.ymlファイルになる。
作成後、metadata.imgの仮想ディスクイメージを作成し、本ファイルを格納する。
仮想マシンはこのmetadata.imgをHDDとしてマウントして設定ファイルを取得している。
$ cat metadata.yml

run.shは、仮想マシンを起動させるshellスクリプトになる。起動にはqemu-kvmコマンドを直接使用している。libvirtコマンドを使用していないので、virt managerの管理下にはならない。
$ cat run.sh

◆仮想マシン作成処理の概要

Wakame-vdc + OpenVNet環境での仮想マシンの作成処理の概要は以下となっていると考えられる。

wakame-vdc

◆Wakame-vdcの仮想マシン削除時の設定確認

1.Instancesの画面で仮想マシンを選択し、プルダウンメニューからTerminateをクリックし、仮想マシンを削除する。

wakame-vdc

2.削除が完了するとStateがterminatedになる。

wakame-vdc

3.instances以下のファイルはフォルダごと削除される。
仮想マシンが生成されていない状態ではtmpフォルダが1個だけ存在する。フォルダ内にファイルは存在しないが、一時ファイル等のワークスペースとして利用されており、フォルダを削除すると仮想マシンが生成できなくなる。
$ cd /var/lib/wakame-vdc/instances/
$ ls -l

4.仮想NICも削除され、インターフェースとして見えなくなっている。
$ ip addr

5.openvswitchに登録された仮想NICの情報はサーバが削除されても残っている。
$ sudo ovs-vsctl show

6.penvswitchに登録された仮想NICの情報は以下のコマンドで削除が可能である。
$ sudo ovs-vsctl del-port if-o1ithl3u
$ sudo ovs-vsctl show

7.仮想NICのopenvswitchへのポートの割り当ては削除されている。 **$ sudo ovs-ofctl show br0

8.openvswitchのFlowTableからも仮想NICの情報は削除されている。
下記のFlowTableには、in_port=2を持つレコードが存在しなくなっている。 $ sudo ovs-ofctl -O OpenFlow13 dump-flows br0

9.OpenVNetの仮想NICの情報も削除されていない。
$ vnctl interfaces show

10.OpenVNetの仮想NICの情報も以下のコマンドで削除が可能である。
ただし、OpenVNetの削除コマンドは削除フラグの設定で、レコードの削除は行わない為、同一uuidの仮想NICを再登録することはできない。
$ vnctl interfaces del if-o1ithl3u

$ vnctl interfaces show

◆Wakame-vdcの設定確認でエラーが発生する場合の確認方法

1.Wakame-vdcの(vdc-webuiのサービス起動時にinitctl: Job is already running: vdc-webuiと判定されて起動しない。) Wakame-vdcの各サービスをinitctlコマンドで起動させる際に、vdc-webuiが既に起動されていると判定され起動ができない事象が発生することがある。特にシェルスクリプト等で一気に起動をかけると高確率で発生する。

本事象は、vdc-webuiだけstartを実行する前に明示的にstopを実行することで回避ができる。

2.Wakame-vdcの管理用WebUIにアクセスできない。
(1) Wakame-vdcの各サービスが起動しているか確認する。

(2) 9000番ポートでWakame-vdcのWebUIがLISTENしているかを確認する。
**$ sudo netstat -antp | grep 9000

(3) 9000/tcpポートが解放されているか確認する。
$ sudo iptables -L

$ cat /etc/services | grep cslistener

3. Wakame-vdcの管理用WebUIのユーザID、パスワードがわからない。
"install_guide_demo_data.sh"を利用した場合、以下の部分で設定されている。

4.Create Security Groupの新規作成の画面でエラーになる。
Rulesにデータを入れるとhttp/400エラーになる。一旦、Security Group NameとDescriptionのみに値を入れて保存して、EditボタンからEdit Security Group画面を起動すると入力できる。

wakame-vdc

5.仮想マシンの起動に失敗する。 仮想マシンイメージのインスタンスの生成時にエラーが発生する場合がある。その原因は以下が考えられる。

原因1:KVMのサービスが停止している。
以下のコマンドでlibvirtdのサービスが起動しているか確認する。停止していた場合は起動を実施する。
$ sudo service libvirtd status
libvirtd (pid 2640) を実行中...

原因2:Machine imageがKVMに対応していない。
AXSH公式のWakame-vdc用イメージ公開サイトからkvm-mdかkvm-msのファイル名のイメージをダウンロードしてMachine imageに登録する。
自分でイメージを作成する場合はkvm上で稼働確認を行い、wakame-initを組み込んでからイメージ化する必要がある。

原因3:イメージの解凍方法が間違っている
Machine imageを登録する際、イメージの解凍方法を登録する必要があるが、gz形式のファイルとtgz形式のものではオプションが異なる。誤ったオプションを指定した場合、使用できない仮想マシンのディスクイメージが生成されてしまう。 * gz形式 --container-format gz * tgz形式 --container-format tgzを指定する。

原因4:openvswitchに仮想NICの情報が既に登録されている。
仮想マシンをshutdownするか、管理GUIからPower OFFしてから、再起動の為にPower ONの処理を実行すると発生する。仮想マシンがrunning直後にhaltedになってしまう状況になる。

OS内でpsコマンドで確認すると仮想マシンは起動している状態になっている。

/var/log/wakame-vdc/hva.logを確認すると、仮想NICのif-ozdwt3auを再起動であるのに登録処理を実行してエラーが発生していることが記録されている。

この状態は、以下の手順で復旧できる。
(1) 仮想マシンのコンソールにvncで接続してshutdownを実行する。
(2) openvswitchから重複となっている仮想NICの情報を削除する。
$ sudo ovs-vsctl del-port if-ozdwt3au
(3) Wakame-vdcの管理GUIから仮想マシンを再度Power ONする。

6.Wakame-vdcからOpenVNetに連携されない。
Wakame-vdc、OpenVNetともに起動しているにも関わらず、OpenVNetに連携されない状態が発生する場合、原因は以下が考えられる。

原因1:Wakame-vdcがstable版
2016年1月現在のWakame-vdcのstable版はOpenVNetへのインターフェースが削除されている。
以下のコマンドでWakame-vdcのdevelop版のリポジトリを登録し、yum updateを実行することで解消が可能である。updateを実施する場合は仮想マシン、Wakame-vdcは停止しておくことが望ましい。

原因2:Wakame-vdcの設定ファイルの記述がOpenVNet連携になっていない。
/etc/wakame-vdc以下の設定ファイルを確認し、設定に不備が無いかを確認する。
$ sudo vi /etc/wakame-vdc/hva.conf

(1) openvnet+openvswitchを利用するために以下の設定は必須となる。

(2) ovs-ofctl、openvswitch、tremaのパスを正しく設定する。

(3) br0はovsとして使用することを明記。
dc_network('public') {

bridge_type 'linux'

bridge_type 'ovs' interface 'br0' bridge 'br0' }

$ sudo vi /etc/wakame-vdc/dcmgr.conf
(1) 以下の設定を追加し、openvnet連携をtrueに変更する。

7.仮想マシンは起動したが、ネットワークに接続できない。
Wakame-vdc+OpenVNet環境で一番多く発生する問題が本事象である。障害の発生状況として考えられるパターンは以下となる。

       OS上の仮想NIC openvswitchのインターフェース登録 openvswitchのポートアサイン OpenVNetのインターフェース登録
確認コマンド ifconfig / ip address ovs-ofctl show br0 ovs-vsctl show vnctl interfaces show
パターン1 × × ×
パターン2 × ×
パターン3 ×
パターン4

各パターンごとの対応については以下が考えられる。

パターン1:openvswitchへの仮想NICの登録に失敗している。
サーバ構築時の仮想NICのopenvswitchの登録処理が失敗していることが考えられる。対応方法は以下となる。
(1) /var/lib/wakame-vdc/i-[ホスト名]/run.sh内を参照し、最後の2行の以下のコマンドを確認する。

(2) 上記のコマンドを実行し、仮想NICがlink upし、openvswitchに登録されることを確認する。コマンドの実行に失敗する場合は、openvswitchのサービスが停止していることが考えられるため、確認・サービスの起動を行う。openvswitchのサービスを再起動した場合、必ずOpenVNetのサービスも再起動が必要である。

(3) コマンドが正常に終了した場合は、OpenVNetのサービスを再起動し、通信が行えるかを確認する。

(4) 稼働中のサーバが存在し、(3)のようなOpenVNetの再起動が行えない場合、以下のコマンドでポート番号を取得し、暫定のFlowを登録する。暫定のFlowを登録することで、OpenVNetの再起動を行わずに通信確認が行える。
$sudo ovs-ofctl show br0

$sudo ovs-ofctl add-flow br0 in_port=3,actions=all
$sudo ovs-ofctl add-flow br0 out_port=3,actions=all

パターン2:openvswitchのポートアサインに失敗している。
仮想マシンは起動しているが、NICがLink upしていない可能性が考えられる。対応方法は以下となる。

(1) 仮想マシンのコンソールにvncまたは、シリアルコンソールにtelnetで接続する。
(2) OSにログインし、NICがlink upしているかを確認する。
(3) link upしていない場合は、link upしてpingで外部に接続できるか確認する。
(4) NICの設定ファイルを確認し、ONBOOT=yesになっていることを確認する。noの場合はyesに変更する。
(5) link upしても接続できない場合は、仮想マシンを再起動し、起動後に通信確認を実施する。

パターン3:OpenVNetへの仮想NICの登録に失敗している。
OpenVNetが仮想NICを認識するトリガーはそのNICからのdhcpによるIP取得リクエストとなっている。仮想マシンのNICからdhcpリクエストが送信されない場合はOpenVNetがNICを認識しない状況が発生する。対処方法は以下となる。

(1) 仮想マシンのコンソールにvncまたは、シリアルコンソールにtelnetで接続する。
(2) NICの設定ファイルを確認し、固定IP設定を削除し、IPをdhcp取得に変更し、サーバを再起動する。設定例は以下となる。

(3) 起動後に以下のコマンド実行し、OpenVNetへの登録を確認する。
$ vnctl interfaces show
(4) 登録されていたら、通信確認を実施する。

パターン4:OpenFlowTableのFlow情報の登録に失敗している。
OpenVNetの情報からのFlow情報の登録処理が何等かの原因で失敗していることが考えられる。。対処方法はとなる。
(1) 以下のコマンドを実行し、ポート番号を取得し、暫定のFlowを登録する。
$sudo ovs-ofctl show br0

$sudo ovs-ofctl add-flow br0 in_port=3,actions=all
$sudo ovs-ofctl add-flow br0 out_port=3,actions=all

(2) (1)のコマンドがエラーとなる場合は、openvswitchに問題が発生している可能性があるため、openvswitch→OpenVNetのサービスの再起動を実施し、通信確認を実施する。
(3) (1)が正常に動作した場合、通信確認を実施する。
(4) 可能であれば、OpeVNetのサービスの再起動実施し、通信確認を実施する。

上記のいずれでもつながらない場合は、原因がWakame-vdc + OpenVNet環境かMachine Imageかを切り分けるため、別のイメージ(Wakame-vdc公式サイトのテスト済のもの)を利用して動作確認を実施することを推奨する。


TIPS

◆リモートのWindows端末からKVM上の仮想マシンのVNC画面を参照する。

仮想マシンのコンソールにアクセスを行うVNCのサービスが存在するが、サービスに接続可能なNICがループバック(localhost/127.0.0.1)のみであるので、通常ではKVMサーバにgnome/kdeなどのGUIとvncviwerをインストールしてアクセスを行う必要が発生する。ただ、システムリソース利用削減の観点からもセキュリティーの観点からもGUIや不要なポートの解放が行われるのはあまり好ましくない。
その対策として、外部のWindows端末のからSSHトンネリングを利用するして接続する方法をご紹介する。

  1. SSH ClientのPuttyを公式サイトからダウンロードしてインストールする。

  2. PuTTYを起動し、KVMサーバに接続する。

wakame-vdc

3.起動している仮想マシンのVNCポート番号を取得する。
(1) psコマンドでプロセスIDを取得する。

(2) netstatコマンドでプロセスが利用しているポート番号を取得する。

(3) vncのポート番号を特定する。
vncのポートは仮想マシンのpsの参照で見えるポートは使用してない。実際のポートはnetstatで取得されたものとなるが、monitorポートとtelnetポートは正しいので、それ以外のポートがvncのポートとなる。上記の例の場合、29409/tcpが使用ポートとなる。

4.PuTTYのタイトルバーで右クリックし、プルダウンからChange Settingsを選択する。

wakame-vdc

5.PuTTYの画面でConnection→SSH→Tunnelsを選択する。

wakame-vdc

6.Source portにローカルの適当なポートを、Destinationに127.0.0.1:[VNCのポート番号]を入力してAddボタンをクリックする。
この設定でKVMサーバのVNCポートをWindows端末のSource portにトンネリング通信で接続が可能となる。

wakame-vdc

7.vncviewrで接続する。
接続もとのホスト名がlocalhost、ポートは先ほどSource portに設定したポートとなる。

wakame-vdc

8.コンソールに接続できたので、仮想マシンにログインする。

wakame-vdc

最後に

Wakame-vdcはdevelop版であるため、一部開発中の機能も存在する。特にエラー発生時の原因を特定するのに画面に表示されるエラー情報やログは特定ができない場合も発生する。ただ、ソース自体が公開されているため、問題が発生したら、エラー発生個所のソースを読んで判断することも必要となる。
ご利用いただき、問題点の指摘や改善要望などがあれば、Wakame-vdcのGithub公開リポジトリに投稿することもできる。さらに、ソースの修正が行えたのであれば、Pull requestsで製品に反映を依頼することも可能である。
まだまだ進化を続けているOSS製品であり、利用者が協力して製品を改良していく形を実現することが望ましい形である。是非、本製品をご活用頂くとともに、OSSコミュニティにも参加を頂くことを是非お願いしたい。

エンジニア採用中!私たちと一緒に働いてみませんか?