首页 \ 问答 \ node.js操作mongodb学习小结

node.js操作mongodb学习小结

更新时间:2023-10-26 21:10

最满意答案

为了解决跨minion之间Pod的通信问题,我们在每个minion上安装Open vSwtich,并使用GRE或者VxLAN使得跨机器之间Pod能相互通信,本文使用GRE,而VxLAN通常用在需要隔离的大规模网络中。对于Open vSwitch的具体安装步骤,可参考这篇博客,我们在这里就不再详细介绍安装步骤了。安装完Open vSwitch后,接下来便建立minion1和minion2之间的隧道。首先在minion1和minion2上建立OVS Bridge,
[root@minion1 ~]# ovs-vsctl add-br obr0

接下来建立gre,并将新建的gre0添加到obr0,在minion1上执行如下命令,
[root@minion1 ~]# ovs-vsctl add-port obr0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.230.5

在minion2上执行,
[root@minion2 ~]# ovs-vsctl add-port obr0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.230.4

至此,minion1和minion2之间的隧道已经建立。然后我们在minion1和minion2上创建Linux网桥kbr0替代Docker默认的docker0(我们假设minion1和minion2都已安装Docker),设置minion1的kbr0的地址为172.17.1.1/24, minion2的kbr0的地址为172.17.2.1/24,并添加obr0为kbr0的接口,以下命令在minion1和minion2上执行。
[root@minion1 ~]# brctl addbr kbr0               //创建linux bridge
[root@minion1 ~]# brctl addif kbr0 obr0          //添加obr0为kbr0的接口
[root@minion1 ~]# ip link set dev docker0 down   //设置docker0为down状态
[root@minion1 ~]# ip link del dev docker0        //删除docker0

为了使新建的kbr0在每次系统重启后任然有效,我们在/etc/sysconfig/network-scripts/目录下新建minion1的ifcfg-kbr0如下:
DEVICE=kbr0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.17.1.1
NETMASK=255.255.255.0
GATEWAY=172.17.1.0
USERCTL=no
TYPE=Bridge
IPV6INIT=no

同样在minion2上新建ifcfg-kbr0,只需修改ipaddr为172.17.2.1和gateway为172.17.2.0即可,然后执行systemctl restart network重启系统网络服务,你能在minion1和minion2上发现kbr0都设置了相应的IP地址。为了验证我们创建的隧道是否能通信,我们在minion1和minion2上相互ping对方kbr0的IP地址,从下面的结果发现是不通的,经查找这是因为在minion1和minion2上缺少访问172.17.1.1和172.17.2.1的路由,因此我们需要添加路由保证彼此之间能通信。
[root@minion1 network-scripts]# ping 172.17.2.1
PING 172.17.2.1 (172.17.2.1) 56(84) bytes of data.
^C
--- 172.17.2.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1000ms

[root@minion2 ~]#  ping 172.17.1.1
PING 172.17.1.1 (172.17.1.1) 56(84) bytes of data.
^C
--- 172.17.1.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1000ms

由于通过ip route add添加的路由会在下次系统重启后失效,为此我们在/etc/sysconfig/network-scripts目录下新建一个文件route-eth0存储路由,这里需要注意的是route-eth0和ifcfg-eth0的黑体部分必须保持一致,否则不能工作,这样添加的路由在下次重启后不会失效。为了保证两台minion的kbr0能相互通信,我们在minion1的route-eth0里添加路由172.17.2.0/24 via 192.168.230.5 dev eno16777736,eno16777736是minion1的网卡,同样在minion2的route-eth0里添加路由172.17.1.0/24 via 192.168.230.4 dev eno16777736。重启网络服务后再次验证,彼此kbr0的地址可以ping通,如:
[root@minion2 network-scripts]# ping 172.17.1.1
PING 172.17.1.1 (172.17.1.1) 56(84) bytes of data.
64 bytes from 172.17.1.1: icmp_seq=1 ttl=64 time=2.49 ms
64 bytes from 172.17.1.1: icmp_seq=2 ttl=64 time=0.512 ms
^C
--- 172.17.1.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 0.512/1.505/2.498/0.993 ms

相关问答

更多
  • 为了解决跨minion之间Pod的通信问题,我们在每个minion上安装Open vSwtich,并使用GRE或者VxLAN使得跨机器之间Pod能相互通信,本文使用GRE,而VxLAN通常用在需要隔离的大规模网络中。对于Open vSwitch的具体安装步骤,可参考这篇博客,我们在这里就不再详细介绍安装步骤了。安装完Open vSwitch后,接下来便建立minion1和minion2之间的隧道。首先在minion1和minion2上建立OVS Bridge, [root@minion1 ~]# ovs-v ...
  • 安装tomcat,导出为war文件,放到安装tomcat目录里面的webapps里面,访问就行了
  • 我在xwiki方面没有太多经验,但我可以阐明一些看法。 你可以忽略--net和--name 您需要在部署中映射容器端口-p 我不确定音量-v用于什么。 如果这只是为了读取某些配置,则需要在Kubernetes中配置一个ConfigMap 所有环境变量-e都可以存储在ConfigMap中并包含在您的部署中。 我建议你看一下示例部署: https : //kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-co ...
  • [根据评论中的讨论进行更新] 这里的问题是Docker CLI无法访问Docker引擎。 由于您使用的是Minikube,因此您可以将Docker CLI指向Minikube内的Docker引擎。 这将确保图像在minikube虚拟机内部生成,并随后在那里运行。 你可以运行命令: eval $(minikube docker-env) 该命令将设置Docker CLI与Minikube中的Docker引擎进行通信所需的参数,并且它应该能够运行失败的命令! [Updating based on discus ...
  • kubernetes是docker容器的编排(调度)系统,不在docker中运行,因为k8ts需要docker守护进程来安排和编排容器。 k8ts需要运行物理(裸机或其他)或虚拟机。 对于在本地运行kubernetes,您可以使用minikube 。 kubernetes is an orchestration(scheduling) system for docker container and don't run inside docker, because k8ts need docker daemo ...
  • 将所有内容都部署在多个副本中,然后将Coffea和Tea服务作为NodePort公开并最终将Nginx作为LoadBalancer公开? 也许是的,这足以让你的应用程序正常工作,但最好的方法是使用集群IP的服务并通过Ingress公开它。 由于Ingress适用于路由,但不适合提供静态内容,因此您可以将Nginx用作仅用于静态内容的Web服务器。 您的应用程序看起来像隐藏在Ingress后面的3个服务: 带集群IP的咖啡服务 集群IP茶服务 集群IP作为静态内容的Web服务器的Nginx服务 这里有一个很好 ...
  • 这是我最终使用的解决方案,可供任何可能在将来遇到此问题的人使用。 在需要运行其他泊坞窗镜像的主泊坞窗镜像中安装kubectl 。 我按照这些文档做了这个。 一旦你安装了kubectl ,它应该能够自动地与它运行的集群进行交互,并且不需要额外的认证。 接下来,要运行teammtes-image:latest的teammtes-image:latest镜像,您可以在python中执行以下操作: import subprocess subprocess.run(["kubectl", "run", "teamma ...
  • 我的应用程序有一些聚合/窗口操作,所以它有一些状态存储在state.dir 。 AFAIK,它还将状态存储的更改日志写入代理,那么可以将Kafka Stream应用程序视为无状态POD? 无状态pod和数据安全(=没有数据丢失):是的,就数据安全而言,您可以将该应用视为无状态pod; 也就是说,无论卡夫卡和卡夫卡数据流发生什么情况,都可以保证您不会丢失数据(并且如果您启用了精确的一次处理,它们也将保证后者)。 这是因为,正如您已经说过的那样,除非您明确禁用了此更改日志功能(默认情况下启用),否则应用程序中的 ...
  • 您可以使用kubectl set image来更新资源的容器图像。 例如: kubectl set image -f file.json jietest=myreg.azurecr.io/jietest:$TAG 。 You can use kubectl set image to update container image of a resource. For example: kubectl set image -f file.json jietest=myreg.azurecr.io/jietest ...
  • 在该示例中,默认应用程序在端口8080上,并且所有命令都设置为通过它暴露它。 由于您将其更改为5000(否则它将无法在该端口上本地工作),请仔细检查服务定义以确保它也在查看该端口。 这是kubectl describe service yourservicename命令。 此外,要通过节点端口远程访问它,您将通过描述为“nodeport”的端口进入,而不是端口5000 - 5000是内部端口,“nodeport”是外部端口。 In that example, the default app is on po ...

相关文章

更多

最新问答

更多
  • 获取MVC 4使用的DisplayMode后缀(Get the DisplayMode Suffix being used by MVC 4)
  • 如何通过引用返回对象?(How is returning an object by reference possible?)
  • 矩阵如何存储在内存中?(How are matrices stored in memory?)
  • 每个请求的Java新会话?(Java New Session For Each Request?)
  • css:浮动div中重叠的标题h1(css: overlapping headlines h1 in floated divs)
  • 无论图像如何,Caffe预测同一类(Caffe predicts same class regardless of image)
  • xcode语法颜色编码解释?(xcode syntax color coding explained?)
  • 在Access 2010 Runtime中使用Office 2000校对工具(Use Office 2000 proofing tools in Access 2010 Runtime)
  • 从单独的Web主机将图像传输到服务器上(Getting images onto server from separate web host)
  • 从旧版本复制文件并保留它们(旧/新版本)(Copy a file from old revision and keep both of them (old / new revision))
  • 西安哪有PLC可控制编程的培训
  • 在Entity Framework中选择基类(Select base class in Entity Framework)
  • 在Android中出现错误“数据集和渲染器应该不为null,并且应该具有相同数量的系列”(Error “Dataset and renderer should be not null and should have the same number of series” in Android)
  • 电脑二级VF有什么用
  • Datamapper Ruby如何添加Hook方法(Datamapper Ruby How to add Hook Method)
  • 金华英语角.
  • 手机软件如何制作
  • 用于Android webview中图像保存的上下文菜单(Context Menu for Image Saving in an Android webview)
  • 注意:未定义的偏移量:PHP(Notice: Undefined offset: PHP)
  • 如何读R中的大数据集[复制](How to read large dataset in R [duplicate])
  • Unity 5 Heighmap与地形宽度/地形长度的分辨率关系?(Unity 5 Heighmap Resolution relationship to terrain width / terrain length?)
  • 如何通知PipedOutputStream线程写入最后一个字节的PipedInputStream线程?(How to notify PipedInputStream thread that PipedOutputStream thread has written last byte?)
  • python的访问器方法有哪些
  • DeviceNetworkInformation:哪个是哪个?(DeviceNetworkInformation: Which is which?)
  • 在Ruby中对组合进行排序(Sorting a combination in Ruby)
  • 网站开发的流程?
  • 使用Zend Framework 2中的JOIN sql检索数据(Retrieve data using JOIN sql in Zend Framework 2)
  • 条带格式类型格式模式编号无法正常工作(Stripes format type format pattern number not working properly)
  • 透明度错误IE11(Transparency bug IE11)
  • linux的基本操作命令。。。