“在阿里云上进行橡胶主机搜索”:在阿里云设施上托管Elasticsearch



前段时间,我谈到了我们使用Elasticsearch解决复杂问题的经验。 这是一个关于香肠故事 ,我们开发了一个数据库,该数据库至少搜索50,000个文档,使您可以搜索产品中的成分并自动从中生成产品说明。

最近,一个有趣的项目来到了我们公司,需要使用Elasticsearch。 这次,我们面临着部署ES以在中国云平台阿里云上的应用程序中工作的任务。 在这里,除了技术问题外,我们还遇到了中国人的意想不到的事情。

本文仅关注我们在阿里云上的个人经验,而不关注界面或标准选项。 我将告诉您与Elasticsearch和阿里云平台的代表进行交流时能找到的内容,以及我们如何使用它来解决问题。

摇摆到中国


在项目开始时,客户宣布该应用程序的首次启动将在中国。 这使任务变得非常复杂:中国法律给开发人员和网站所有者带来了很多不便。 由于当地官僚机构而获得的域名仅会持续三个月。 但是,如果您在中国境外托管应用程序怎么办? -你问。 作为回应,我祝你在中国地区的发射好运,因为在中国这种做法实际上是非法的。

我们被授予访问阿里云上客户端服务器的权限,并要求在其上部署应用程序的Docker容器。 这是第一个,但不是主要问题。 我们将访问权限从容器转发到文件系统,以便可以在服务器级别访问项目文件,这里的问题是在服务器本身上,除了docker之外,别无其他:既不是git,nginx和php。 一切都在容器级别完成,服务器只是一个数据仓库。 因此,一个简单的git pull变成了以下内容:

docker exec -it b33aee747c5e git pull 

因此,我们必须为每个容器编写一个bash脚本,例如,名称为git:

 docker exec -it b33aee747c5e git $@ 

此外,冒险只是变得更加复杂:我们不得不以某种方式在其上安装ES。 通过阿里云管理控制台,我们安装了Elasticsearch 6.0.0映像并...
...一段时间后,他们开始发现错误。 X-Pack访问控制系统将开始“发誓”许可证到期28天后,然后在为约500个文档建立索引时,RAM将终止。 没有“飙升”。

老问题


一直以来,我们都认为失败的原因是X-Pack,正是他阻止了我们正常工作。

客户听完我们的版本后说:“好吧,我们该怎么办。” -因此,我们将购买X-Pack许可证。 写信给Elasticsearch,也许他们自己会提供一些建议。” 我写信给客户服务部,荷兰办事处的顾问Driton Khalili回答了我(如果您碰巧和他一起工作,问我问好,他很酷)。 是的,东欧和俄罗斯在其土耳其人的工作地点设有荷兰办事处。

该顾问向我介绍了X-Pack许可证支付系统,并询问了我们在哪里托管。
我在中国回答。

他说:“这是一个问题。” -您的客户需要写信给我们的中文分支机构,以帮助他解决这个问题。
-还有其他选择吗? 我问。
-尝试联系阿里云。 事实是,我们最近与他们达成了合作伙伴协议,现在他们将Elasticsearch作为服务提供。
“所以我们接待他们,”我说。
-那么为什么要用容器折磨而不是直接从容器中拿走?
谈话结束后,我将所有这些转告给客户。
-我的意思是-阿里巴巴是否将Elasticsearch即服务? -客户的愤怒无止境。 之后,他去与“中国同事”交谈,第二天他告诉了以下内容:
-这些人说我是“爱人”,而就我的“爱人”而言,我不应该拥有Elasticsearch。
不难猜测,老挝人经常把外国人称为中国人,经常用这个词带有可鄙的含义。 可以说,这是中国人“大量出现”。
-他们在那里喝普er茶,还是什么?
-我不知道puer,但是在我的鼓舞人心的演讲后,他们错了一些,而且我通常为此付钱,他们给了我指向Elasticsearch的“秘密”链接,该链接现在将显示在我们的云控制台中。 设置好,我们将移动。

如何“起飞”


三个星期后,控制台菜单(在最底部的DTplus部分)中出现了指向阿里云Elasticsearch的链接。



由此我们可以得出结论,尽管中国人仍然给您一个链接,您将不得不等待一段时间(我不确定价格,我认为这并没有增加订阅我们的费用)。

还有一件事:当然,您将可以访问设置,常规URL,用于监视的Kibana。 只有当您尝试从其他地方到达ES时,您才能获得505。

我如何解决这个问题?

默认情况下,仅可从Kibana访问阿里云控制台的Elasticsearch,并将代理从其调用到ES所在服务器内的127.0.0.1。 然后我想:我们在容器之间拥有的IP地址是什么? 我进入设置,看到我们所有人都在一个相当熟悉的子网192.168.0中旋转。 我不太确定,因此我给自己写了几个地址,以防万一我没有“飞起来”。

我还考虑了如果我自己需要从工作站向ES发送请求会发生什么情况,因此我还在纸上写下了IP地址。

接下来,执行以下操作。

转到阿里云控制台,打开群集->管理->网络和快照->群集网络设置部分->公用IP地址白名单->更新。 我们在这里保存了所有有用的地址-个人和公共地址。 之后,您既可以在应用程序容器中,也可以在其他地方工作并敲响ES。



此举用了不到两个小时的时间。 没错,再过一个星期,我对一切都会下降的事实感到不安,但到目前为止,一切都没有下降。 三个月来,它从未下降过。

总共,我们花了大约三个星期的时间来解决一个不存在的问题。 只是中国人非常狡猾,不希望将他们的服务提供给任何“老员工”。 对于一个具有我们或西方思维方式的人来说,这很奇怪,但是,我们处理了这个问题,这是一个相当有趣的经历。

感谢您的关注!

Source: https://habr.com/ru/post/zh-CN420927/


All Articles