![](https://habrastorage.org/web/24e/f86/e8b/24ef86e8b74d43918efbeee87af93f6d.png)
「そのような建物は誰ですか?!」
ルーターがネットワーク上でデフォルトで持つべきアドレスは大きな問題です。 実際、サブネットからのアドレスであることを妨げるものは何もありません。 そして、OpenStackライターも決定しました-最初に、何に苦しむのでしょうか?
その結果、すべてが落ちてしまうので、あなたは自分の感覚に触れる時間がありません。 なんで? 予想外に、すべての人にとって、デフォルトのgwはルーター上ではなく、オープンソース上にあるためです。 顧客は電話をかけています、上司は激しいです。 そして、あなたは秋の別の理由を探しています。 同僚が交換のために既存のアドレスのフックを解除しただけで、オープンスタックはより巧妙であることが判明しました...
人生は続く
場合によっては、問題はすぐに発生しますが、発生しない場合もあります。 思い出させてください。古い問題は、IPパケットの一部が定期的に消えることでした。
私は少し正当化しようとします。 -多くの場合、問題は外部攻撃の存在と一致していました。 さらに、多くの場合、問題は混雑したチャネルにあるように思われました。 場合によっては、チャネルの制限を超えて、パケットが実際にドロップされました。 これは、プラットフォームに感染したマシンが存在し、信じられないほどの内部トラフィックを生成したために悪化しました。 さらに、ネットワーク機器の誤動作では、 プログラマーのエラーが原因で、誤ったパッケージも殺されました。 さらに、 構成ファイルは単純に巨大です。
私はロボットや魔術師ではありません-思慮深い読書でオプションの機能を理解できますが、特定のコンテキストでオプションが必要かどうかは完全に不明でした。 実際に最も合理的な仮定を確認しながら、直感的に推測する必要がありました。
したがって、私と同僚が問題を分離して特定することは困難でした。 さらに悪いことに、新しく作成されたファームには問題がありませんでした。 300台の車を生成し、すべてが時計のように機能しました。 もちろん、私たちはすぐに「生産」のために準備を始めました。 これは、IPアドレスの「破壊された」範囲の導入を暗示しています。 これらの300台の車を取り外して農場を清掃しました。 そして突然、3台のテスト仮想マシンが存在するだけで、古いファームと同じことが起こりました-パッケージが大量に消え始めました。 そのため、問題はOpenStackの深層のどこかにあると判断しました。
奇妙な回避策
古い農場で、この問題を回避する比較的簡単な方法を見つけました。 これは、内部IPアドレスを切り離し、別のサブネットから割り当てることによって行われました-新しいサブネットを追加する必要がしばしばありました。 問題はしばらく消えました。 一部のマシンはうまく機能しました。
ソリューションは近くのどこかにあります
設計作業によって中断され、VIPからの問題に気を取られた長い調査の間、いくつかのエラーを特定することができました。 さらに、コントローラーを計算ノードとして使用する場合と使用しない場合、これらの同じファイルは異なります。 最初に成功した構成の1つで、それを使用しました。 それから彼らはそれを拒否した。 設定の一部は残りました。 したがって、9台のマシンのうち2台の設定が正しくありません(dvrではなく、dvr-snatパラメーターが計算ノードに到達しました)。 最後に、適切なパラメーターを見つけて、適切な場所に配置しました。
仮想ルーターがどのように機能するかを理解せずに、どこで設定を取得するのか、同様に構成する必要がありました。 理論的には、1つのアドレスを使用し、それに応じて1つのポピーアドレスを使用する必要があります。 論理的ですか? 私たちは同僚と推論し、それに応じてセットアップしました。
DHCPの問題の調査中のある時点で(パート2を参照)、重複したポピーアドレスが見つかりました。 1つでも2つでもありませんが、それ以上です。 これが数字です!
base_macおよびdvr_base_macの設定を変更することが決定されました。 各コンピューターおよび各コントローラーで、これらのパラメーターは異なります。
当初から、まだl2人口を有効にしていません。まあ、手が届きませんでした。 そして、新しいファームに含まれています。 そして、すべてのそのような変更の後、見てください-それは働きました! それだけでなく、pingは「general」という単語から消えなくなりました。 以前は、いいえ、いいえ、バッグはそのように消えます-0.1%、私たちはそれが一般的に良いと思っていました。 四分の一または半分が消えたとき、それははるかに悪いからです。
[デフォルト]
bind_host = 192.168.1.4
auth_strategy = keystone
core_plugin = ml2
allow_overlapping_ips = True
service_plugins =ルーター
base_mac = fa:17:a1:00:00:00
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
advertise_mtu = true
allow_automatic_dhcp_failover = true
dhcp_agents_per_network = 3
dvr_base_mac = fa:17:b1:00:00:00
router_distributed = true
allow_automatic_l3agent_failover = true
l3_ha = true
max_l3_agents_per_router = 3
rpc_backend =ウサギ
[エージェント]
root_helper = sudo / usr / bin / neutron-rootwrap /etc/neutron/rootwrap.conf
[データベース]
connection = mysql + pymysql:// neutron:ZPASSWORDZ @ mama / neutron
[keystone_authtoken]
auth_uri = ママ :5000
auth_url = mama :35357
memcached_servers = mama:11230
auth_plugin =パスワード
project_domain_name =デフォルト
user_domain_name =デフォルト
project_name =サービス
ユーザー名= neutron
パスワード= ZPASSWORDZ
[新星]
auth_url = mama :35357
auth_plugin =パスワード
project_domain_name =デフォルト
user_domain_name =デフォルト
region_name = RegionOne
project_name =サービス
ユーザー名= nova
パスワード= ZPASSWORDZ
[oslo_messaging_rabbit]
rabbit_userid = openstack
rabbit_password = ZPASSWORDZ
rabbit_durable_queues = true
rabbit_hosts =ママ:5673
rabbit_retry_interval = 1
rabbit_retry_backoff = 2
rabbit_max_retries = 0
rabbit_ha_queues = false
[クォータ]
quota_network = 100
quota_subnet = 200
quota_port = -1
quota_router = 100
quota_floatingip = -1
quota_security_group = -1
quota_security_group_rule = -1
[デフォルト]
bind_host = 192.168.1.7
bind_port = 9696
auth_strategy = keystone
core_plugin = ml2
allow_overlapping_ips = True
service_plugins =ルーター
base_mac = fa:17:c1:00:00:00
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
allow_automatic_dhcp_failover = true
dhcp_agents_per_network = 3
dvr_base_mac = fa:17:d1:00:00:00
router_distributed = true
allow_automatic_l3agent_failover = true
l3_ha = true
max_l3_agents_per_router = 3
rpc_backend =ウサギ
[エージェント]
root_helper = sudo / usr / bin / neutron-rootwrap /etc/neutron/rootwrap.conf
[データベース]
connection = mysql + pymysql:// neutron:ZPASSWORDZ @ mama / neutron
[keystone_authtoken]
auth_uri = ママ :5000
auth_url = mama :35357
memcached_servers = mama:11230
auth_plugin =パスワード
project_domain_name =デフォルト
user_domain_name =デフォルト
project_name =サービス
ユーザー名= neutron
パスワード= ZPASSWORDZ
[新星]
auth_url = mama :35357
auth_plugin =パスワード
project_domain_name =デフォルト
user_domain_name =デフォルト
region_name = RegionOne
project_name =サービス
ユーザー名= nova
パスワード= ZPASSWORDZ
[oslo_messaging_rabbit]
rabbit_hosts =ママ:5673
rabbit_userid = openstack
rabbit_password = ZPASSWORDZ
rabbit_durable_queues = true
rabbit_retry_interval = 1
rabbit_retry_backoff = 2
rabbit_max_retries = 0
rabbit_ha_queues = true
私たちは1日辛抱強く待ちました(しかし、「すべてがうまくいきました!」と叫んで走りたかったのです)、古い農場でも同様の変更を適用しました。 2週目-通常のフライト。
おわりに
結論:もちろん、手動で設定しなかった場合、自動インストーラを使用していた場合、これはすべて起こりませんでした。 しかし、得られた経験は非常に貴重です。