场景6:具有OpenvSwitch的提供商网络
此场景描述了使用带有Open vSwitch(OVS)的ML2插件的OpenStack网络服务的提供者网络实现。
在OpenStack网络引入分布式虚拟路由器之前,所有网络通信都通过一个或多个专门的网络节点,这些节点的性能和可靠性都很有限。物理网络基础设施通常比在软件中处理各种网络操作的通用主机提供更好的性能和可靠性。
总的来说,OpenStack网络软件组件最能处理三层操作的影响性能和可靠性。为了提高性能和可靠性,提供商网络将第3层操作转移到物理网络基础设施上。
在一个特定的用例中,OpenStack部署驻留在一个混合环境中,其中使用了大量的物理网络基础设施。在OpenStack部署中运行的应用程序可能需要直接的2层访问,通常使用VLANs来访问部署之外的应用程序。
示例配置创建了一个VLAN提供者网络。然而,它也支持Flat(未标记的或本地的)提供者网络。
先决条件
这些先决条件定义了部署此场景所需的最小物理基础设施和立即的OpenStack服务依赖关系。
例如,网络服务直接依赖于身份服务,而计算服务直接依赖于网络服务。而像镜像服务没有依赖性的服务,是因为网络服务没有直接依赖它。
然而,计算服务依赖于镜像服务来启动一个实例。本场景中的示例配置假定了网络服务组件的基本配置知识。
为了便于说明,管理网络使用10.0.0 / 24,供应商网络使用192.0.2.0 / 24,198.51.100.24,和203.0.113.0 / 24。
基础设施
1.一个具有两个网络接口的控制节点:管理和provider。provider接口连接到物理网络基础设施交换机/路由到外部网络(通常是Internet)的通用网络。Open vSwitch网桥br-provider必须在provider网络接口上包含一个端口。
2.至少两个计算节点有两个网络接口:管理和供应商。
提供商接口连接到物理网络基础设施切换到外部网络(通常是因特网)的通用网络。Open vSwitch网桥br-provider必须在供应商网络含一个接口。
硬件要求
网络布局
服务布局
控制节点的OpenStack服务
在neutron.conf文件中具有数据库服务器的合适配置
在neutron.conf文件中具有消息队列服务的合适配置。
在neutron.conf文件中具有openstack keystone服务的合适配置
在nova.conf文件中具有openstack计算 控制/管理服务的合适配置去使用neutron
neutron服务器服务、Open vSwitch服务、ML2插件、Open vSwitch代理、DHCP代理和任何依赖关系。
计算节点的Openstack服务
在neutron.conf文件中具有openstack keystone服务的合适配置
在nova.conf文件中具有openstack计算 控制/管理服务的合适配置去使用neutron
Open vSwitch服务,ML2插件,Open vSwitch代理,以及任何依赖项。
架构
一般的供应商网络架构使用物理网络基础设施来处理网络流量的交换和路由。
一般的体系架构
控制节点包含以下网络组件:
1.OpenvSwitch代理管理虚拟交换机之间的连接,以及通过虚拟端口与其他网络组件(如名称空间和底层接口)进行交互。
2.管理qdhcp名称空间的DHCP代理。qdhcp名称空间为使用提供者网络的实例提供DHCP服务。
控制节点组件回顾
控制节点组件连接
注意:为了便于说明,该图包含两个不同的供应商网络。
计算节点包含以下网络组件:
1.Open vSwitch代理管理虚拟交换机之间的连接,以及通过虚拟端口与其他网络组件(如Linux网桥接和底层接口)进行交互。
2.Linux网桥处理安全组。
注意:由于Open vSwitch和iptables的限制,网络服务使用Linux桥来管理实例的安全组。
计算节点组件回顾
计算节点组件连接
为了便于说明,该图包含两个不同的提供者网络。
Packet flow
南北网络流量在一个实例和外部网络之间传输,通常是互联网。东西网络流量在实例之间传播。
Open vSwitch在内部使用vlan来隔离网桥的网络。VLAN ID通常与虚拟网络的分割ID不同。
案例1:南北向流量
物理网络基础架构处理供应商和外部网络之间的路由和潜在的其他服务
在这种情况下,提供商和外部简单地区分可用于实例的网络和仅可经由路由器访问的网络,以说明物理网络基础设施处理路由
然而,供应商网络支持直接连接到外部网络,如因特网。
外部网络
网络203.0.113./
供应商网络(VLAN)
网络192.0.2./ 带有MAC地址TG网关192.0.2.
计算节点1
带有MAC地址I1和192.0.2.11的实例1
实例1驻留在计算节点1上,并使用供应商网络。
实例向外部网络的主机发送一个包。
下面的步骤涉及计算节点1。
1.实例1的tap接口(1)将包转发到Linux网桥qbr。该包包含目标MAC地址TG,因为目的地驻留在另一个网络上。
2.安全组规则(2)在Linux网桥qbr上处理数据包的防火墙和状态跟踪。
3.Linux桥qbr将数据包转发到Open vSwitch集成网桥br-int。
4.Open vSwitch集成网桥为供应商网络添加了内部标记。
5.Open vSwitch集成网桥br-int将包转发给Open vSwitch供应商网桥br-provider。
6.Open vSwitch供应商网桥br-provider将使用提供者网络的实际VLAN标记(分段ID)替换内部标记。
7.Open vSwitch供应商网桥br-provider通过提供者网络接口将数据包转发到物理网络。
以下步骤涉及物理网络基础设施:
1.交换机(3)处理供应商网络1与路由器(4)之间的任何VLAN标记操作。
2.路由器(4)将数据包从供应商网络1路由到外部网络。
3.交换机(3)处理路由器(4)和外部网络之间的任何VLAN标记操作。
4.交换机(3)将数据包转发到外部网络。
注意:返回的流量也遵循类似的步骤。
南北网络流量流向
案例2:在不同网络上的实例的东西向流量
物理网络基础设施处理提供者网络之间的路由。
供应商网络1
网络:192.0.2.0/ 带有MAC地址TG1的网关:192.0.2.1
供应商网络2
网络:198.51.100.0/ 网关:带MAC地址TG2的198.51..1
计算节点1
带有192.0.2.11 和MAC地址为I1的实例1
计算节点2
带有MAC地址为I2和198.51.100.11 的实例2
实例1驻留在计算节点1上,并使用提供者网络1。
实例2驻留在计算节点2上,并使用提供者网络2。
实例1发送一个包到实例2。
以下步骤涉及计算节点1:
1.实例1的tap接口(1)将包转发到Linux网桥qbr。该包包含目标MAC地址TG1,因为目的地驻留在另一个网络上。
2.安全组规则(2)在Linux网桥qbr上处理数据包的防火墙和状态跟踪。
3.Linux网桥qbr将数据包转发到Open vSwitch集成网桥br-int。
4.Open vSwitch集成网桥br-int为提供商网络1添加了内部标记。
5.Open vSwitch集成网桥br-int将包转发给Open vSwitch提供商网桥br-provider
6.Open vSwitch提供商bridge br-provider将内部标记替换为供应商网络1的实际VLAN标记(分段ID)。
7.Open vSwitch VLAN bridge br-provider通过提供者网络接口将数据包转发到物理网络基础设施。
以下步骤涉及物理网络基础设施:
1.交换机(3)处理供应商网络1与路由器(4)之间的任何VLAN标记操作。
2.路由器(4)将数据包从提供者网络1路由到提供者网络2。
3.交换机(3)处理路由器(4)和提供者网络2之间的任何VLAN标记操作。
4.交换机(3)将数据包转发到计算节点2。
以下步骤涉及计算节点2:
1.提供者网络接口将包转发给Open vSwitch供应商网桥br-provider.。
2.Open vSwitch供应商网桥br-provider将数据包转发到Open vSwitch集成网桥br-int。
3.Open vSwitch集成网桥br-int使用内部标记替换了提供者网络2的实际VLAN标记(分段ID)
4.Open vSwitch集成网桥br-int将包转发到Linux网桥qbr。
5.安全组规则(5)在Linux网桥qbr上处理数据包的防火墙和状态跟踪。
6.Linux网桥qbr将数据包转发到实例2上的tap接口(6)。
注意:返回的流量也遵循类似的步骤。
在不同网络上的实例的东西向流量流向
案例3:在同一网络中实例的东西向流量
物理网络基础结构处理提供者网络中的交换。
供应商网络
网络:192.0.2.0/
计算节点1
带有MAC地址为I1和192.0.2.11 的实例1
计算节点2
带有MAC地址为I2和192.0.2.12实例2
实例1驻留在compute节点1中。
实例2驻留在compute节点2中。
两个实例都使用相同的提供者网络。
实例1发送一个包到实例2。
以下步骤涉及计算节点1:
1.实例1的tap接口(1)将包转发到Linux网桥qbr。该包包含目标MAC地址I2,因为目的地位于同一网络。
2.安全组规则(2)在Linux网桥qbr上处理数据包的防火墙和状态跟踪。
3.Linux网桥qbr将数据包转发到Open vSwitch集成网桥br-int。
4.Open vSwitch集成网桥br-int为提供者网络添加了内部标记。
5.Open vSwitch集成网桥br-int将包转发给Open vSwitch提供商网桥br-provider。
6.Open vSwitch提供者网桥br-provider将使用提供者网络的实际VLAN标记(分段ID)替换内部标记。
7.Open vSwitch VLAN bridge br-provider通过提供者网络接口将数据包转发到物理网络基础设施。
以下步骤涉及物理网络基础设施:
1.交换机(3)将数据包从计算节点1转发到计算节点2。
以下步骤涉及计算节点2:
1.提供者网络接口将包转发给Open vSwitch供应商网桥br-provider。
2.Open vSwitch供应商网桥br-provider将数据包转发到OpenvSwitch集成网桥br-int。
3.Open vSwitch集成桥br-int使用内部标记替换了提供者网络1的实际VLAN标记(分段ID)
4.Open vSwitch集成网桥br-int将包转发到Linux网桥qbr。
5.安全组规则(4)在Linux网桥qbr上处理数据包的防火墙和状态跟踪。
6.Linux网桥qbr将数据包转发到实例2的tap接口(5)。
注意:返回的流量也遵循类似的步骤
在同一网络中实例的东西向流量流向
示例配置
使用下面的示例配置作为在您的环境中部署该场景的模板。
请注意:在此场景中缺少L3代理将阻止常规元数据代理的操作。您必须使用配置驱动来提供实例元数据。
控制器节点
1.配置内核以禁用反向路径过滤。编辑/etc/sysctl.配置文件:
net.ipv4.conf.default.rp_filter=
net.ipv4.conf.all.rp_filter=
2.加载新内核配置:
$ sysctl -p
3.配置常见的选项。编辑/etc/neutron/neutron.配置文件:
[DEFAULT]
verbose = True
core_plugin = ml2
service_plugins =
注意:service_plugins选项不包含任何值,因为网络服务不提供像路由这样3层服务。
4.配置ML2插件和Open vSwitch代理。编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件:
[ml2]
type_drivers = flat,vlan
tenant_network_types =
mechanism_drivers = openvswitch [ml2_type_flat]
flat_networks = provider [ml2_type_vlan]
network_vlan_ranges = provider [ovs]
bridge_mappings = provider:br-provider [securitygroup]
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
enable_security_group = True
enable_ipset = True
注意:
tenant_network_types选项不包含任何值,因为架构不支持项目(私有)网络。
network_vlan_range选项中的provider值缺乏VLAN ID范围,以支持使用任意VLAN ID。
5.配置DHCP代理。编辑/etc/neutron/dhcp_agent.ini文件:
[DEFAULT]
verbose = True
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
dhcp_delete_namespaces = True
6.启动以下服务:
Open vSwitch
7.创建Open vSwitch供应商网桥br-provider:
$ ovs-vsctl add-br br-provider
8.将提供者网络接口添加为Open vSwitch供应商网桥br-provider的端口:
$ ovs-vsctl add-port br-provider PROVIDER_INTERFACE
将PROVIDER_INTERFACE替换为处理供应商网络的底层接口的名称。例如,eth1。
9.启动以下服务:
Server
Open vSwitch agent
DHCP agent
计算节点
1.配置内核以禁用反向路径过滤。编辑/etc/sysctl.配置文件:
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0
2.加载新内核配置:
$ sysctl -p
3.配置常见的选项。编辑/etc/neutron/neutron.配置文件:
[DEFAULT]
verbose = True
4.配置Open vSwitch代理。编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件:
[ovs]
bridge_mappings = provider:br-provider [securitygroup]
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
enable_security_group = True
enable_ipset = True
5.启动以下服务:
Open vSwitch
6.创建Open vSwitch provider bridge br-provider:
$ ovs-vsctl add-br br-provider
7.将提供者网络接口添加为Open vSwitch供应商网桥br-provider的端口:
ovs-vsctl add-port br-provider PROVIDER_INTERFACE
将PROVIDER_INTERFACE替换为处理提供者网络的底层接口的名称。例如,eth1。
8.启动以下服务:
Open vSwitch agent
验证服务操作
1.提供管理项目凭据。
2.验证代理的存在和操作:
$ neutron agent-list
+--------------------------------------+--------------------+------------+-------+----------------+---------------------------+
| id | agent_type | host | alive | admin_state_up | binary |
+--------------------------------------+--------------------+------------+-------+----------------+---------------------------+
| 09de6af6-c5f1--8b09-18801f068c57 | Open vSwitch agent | controller | :-) | True | neutron-openvswitch-agent |
| 1c5eca1c--40ae-93f1-6bde214fa303 | DHCP agent | controller | :-) | True | neutron-dhcp-agent |
| 6129b1ec--4ec5-a4bd-460ca83a40cb | Open vSwitch agent | compute1 | :-) | True | neutron-openvswitch-agent |
| 8a3fc26a--416d-9d29-6d44f0e4a24f | Open vSwitch agent | compute2 | :-) | True | neutron-openvswitch-agent |
+--------------------------------------+--------------------+------------+-------+----------------+---------------------------+
创建初始网络
这个例子创建了一个VLAN提供者网络。将VLAN ID和IP地址范围更改为适合您的环境的值。
1.提供管理项目凭据。
2.创建一个提供者网络:
$ neutron net-create provider- --shared \
--provider:physical_network provider --provider:network_type vlan \
--provider:segmentation_id
Created a new network:
+---------------------------+--------------------------------------+
| Field | Value |
+---------------------------+--------------------------------------+
| admin_state_up | True |
| id | 8b868082-e312---298109d4401c |
| name | provider- |
| provider:network_type | vlan |
| provider:physical_network | provider |
| provider:segmentation_id | |
| router:external | False |
| shared | True |
| status | ACTIVE |
| subnets | |
| tenant_id | e0bddbc9210d409795887175341b7098 |
+---------------------------+--------------------------------------+
注意:share选项允许任何项目使用此网络。
3.在供应商网络上创建子网:
$ neutron subnet-create provider- 203.0.113.0/ \
--name provider--subnet --gateway 203.0.113.1
Created a new subnet:
+-------------------+--------------------------------------------------+
| Field | Value |
+-------------------+--------------------------------------------------+
| allocation_pools | {"start": "203.0.113.2", "end": "203.0.113.254"} |
| cidr | 203.0.113.0/ |
| dns_nameservers | |
| enable_dhcp | True |
| gateway_ip | 203.0.113.1 |
| host_routes | |
| id | 0443aeb0-1c6b-4d95-a464-c551c47a0a80 |
| ip_version | |
| ipv6_address_mode | |
| ipv6_ra_mode | |
| name | provider--subnet |
| network_id | 8b868082-e312---298109d4401c |
| tenant_id | e0bddbc9210d409795887175341b7098 |
+-------------------+--------------------------------------------------+
验证网络操作
1.在控制节点上,验证qdhcp名称空间的创建:
$ ip netns
qdhcp-8b868082-e312---298109d4401c
注意:在启动实例之前,qdhcp名称空间可能不存在。
2.提供常规项目凭证。下面的步骤使用demo项目。
3.创建适当的安全组规则,允许ping和SSH访问实例。例如:
$ nova secgroup-add-rule default icmp - - 0.0.0.0/
+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port | IP Range | Source Group |
+-------------+-----------+---------+-----------+--------------+
| icmp | - | - | 0.0.0.0/ | |
+-------------+-----------+---------+-----------+--------------+ $ nova secgroup-add-rule default tcp 0.0.0.0/
+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port | IP Range | Source Group |
+-------------+-----------+---------+-----------+--------------+
| tcp | | | 0.0.0.0/ | |
+-------------+-----------+---------+-----------+--------------+
4.在供应商网络上启动一个具有接口的实例。
$ nova boot --flavor m1.tiny --image cirros-0.3.-x86_64-disk test_server
+--------------------------------------+-----------------------------------------------------------------+
| Property | Value |
+--------------------------------------+-----------------------------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-AZ:availability_zone | nova |
| OS-EXT-SRV-ATTR:host | - |
| OS-EXT-SRV-ATTR:hypervisor_hostname | - |
| OS-EXT-SRV-ATTR:instance_name | instance- |
| OS-EXT-STS:power_state | |
| OS-EXT-STS:task_state | scheduling |
| OS-EXT-STS:vm_state | building |
| OS-SRV-USG:launched_at | - |
| OS-SRV-USG:terminated_at | - |
| accessIPv4 | |
| accessIPv6 | |
| adminPass | h7CkMdkRXuuh |
| config_drive | |
| created | --22T20::16Z |
| flavor | m1.tiny () |
| hostId | |
| id | dee2a9f4-e24c-444d-8c94-386f11f74af5 |
| image | cirros-0.3.-x86_64-disk (2b6bb38f-f69f-493c-a1c0-264dfd4188d8) |
| key_name | - |
| metadata | {} |
| name | test_server |
| os-extended-volumes:volumes_attached | [] |
| progress | |
| security_groups | default |
| status | BUILD |
| tenant_id | 5f2db133e98e4bc2999ac2850ce2acd1 |
| updated | --22T20::16Z |
| user_id | ea417ebfa86741af86f84a5dbcc97cd2 |
+--------------------------------------+-----------------------------------------------------------------+
5.确定实例的IP地址。下面的步骤使用203.0.113.3。
$ nova list
+--------------------------------------+-------------+--------+------------+-------------+--------------------------+
| ID | Name | Status | Task State | Power State | Networks |
+--------------------------------------+-------------+--------+------------+-------------+--------------------------+
| dee2a9f4-e24c-444d-8c94-386f11f74af5 | test_server | ACTIVE | - | Running | provider-=203.0.113.3 |
+--------------------------------------+-------------+--------+------------+-------------+--------------------------+
6.在控制节点或任何访问提供者网络的主机上,ping IP地址:
$ ping -c 203.0.113.3
PING 203.0.113.3 (203.0.113.3) () bytes of data.
bytes from 203.0.113.3: icmp_req= ttl= time=3.18 ms
bytes from 203.0.113.3: icmp_req= ttl= time=0.981 ms
bytes from 203.0.113.3: icmp_req= ttl= time=1.06 ms
bytes from 203.0.113.3: icmp_req= ttl= time=0.929 ms --- 203.0.113.3 ping statistics ---
packets transmitted, received, % packet loss, time 3002ms
rtt min/avg/max/mdev = 0.929/1.539/3.183/0.951 ms
7.获取对实例的访问。
8.测试连接到互联网:
$ ping -c openstack.org
PING openstack.org (174.143.194.225) () bytes of data.
bytes from 174.143.194.225: icmp_req= ttl= time=17.4 ms
bytes from 174.143.194.225: icmp_req= ttl= time=17.5 ms
bytes from 174.143.194.225: icmp_req= ttl= time=17.7 ms
bytes from 174.143.194.225: icmp_req= ttl= time=17.5 ms --- openstack.org ping statistics ---
packets transmitted, received, % packet loss, time 3003ms
rtt min/avg/max/mdev = 17.431/17.575/17.734/0.143 ms
场景6:具有OpenvSwitch的提供商网络的更多相关文章
- 场景7:带有Linux网桥的提供商网络
此场景描述了使用带有Linux网桥的ML2插件的OpenStack网络服务的供应商网络实现. 供应商网络通常以灵活性为代价提供简单性.性能和可靠性.与其他场景不同,只有管理员可以管理提供者网络,因为它 ...
- 什么原因?全球许多网络提供商推迟部署IPv6
全球许多网络提供商推迟部署IPv6,指出升级路由器和交换机的成本以及NAT为扩展IPv4地址所取得的令人印象深刻的成就. 这并没有阻止像澳门CTM这样的互联网服务供应商不要冒险,以此为榜样,并且满足终 ...
- Cloud Native Weekly | 华为云抢先发布Redis5.0,红帽宣布收购混合云提供商 NooBaa
1——华为云抢先发布Redis5.0 2——DigitalOcean K8s服务正式上线 3——红帽宣布收购混合云提供商 NooBaa 4——微软发布多项 Azure Kubernetes 服务更新 ...
- 新动能 · 新机遇:SaaS软件提供商 Zoho 25 周年战略再升级
25年,在历史的长河中不过转眼一瞬:但是对于创造者来说,25年足以颠覆一个时代...... 作为世界级云应用服务商,Zoho已经走过了25年的砥砺岁月.从ManageEngine到Zoho云服务,从工 ...
- 十家国内知名的EDM服务提供商
国内的EDM服务商多若繁星.下面博主为大家介绍十家国内知名的EDM服务提供商. 一.Webpower 威勃庞尔. 官方网站是:www.webpower.asia.作为全球领先的邮件营销解决方案提供商, ...
- Spring Security构建Rest服务-1201-Spring Security OAuth开发APP认证框架之实现服务提供商
实现服务提供商,就是要实现认证服务器.资源服务器. 现在做的都是app的东西,所以在app项目写代码 认证服务器: 新建 ImoocAuthenticationServerConfig 类,@Ena ...
- SPC软控件提供商NWA的产品在各行业的应用(包装行业)
Northwest Analytical (NWA)是全球领先的“工业4.0”制造分析SPC软件控件提供商.产品(包含: NWA Quality Analyst , NWA Focus EMI 和 N ...
- SPC软控件提供商NWA的产品在各行业的应用(生命科学行业)
在上一篇文章中,我们提到了NWA软件产品在各行业都有广泛的应用,并且就化工行业的应用展开了详细介绍.而在本文中,您将看到NWA产品在生命科学行业也扮演着不可替代的角色. Northwest Analy ...
- 为什么有线宽带提供商获得ASN非常重要?
光纤和同轴电缆的组合(数据有线电视服务接口规范),由此产生的网络在世界引入了高速互联网接入.我们能够从网络运营中心向家庭用户提供10Mbps的下载速度. 拥有自己的自治系统编号(ASN)和IP块意味着 ...
随机推荐
- 【题解】Comet OJ Round 70 简要题解
[题解]Comet OJ Round 70 简要题解 A 将放在地上的书按照从小到大排序后,问题的本质就变成了合并两个序列使得字典序最小.可以直接模拟归并排序.直接用循环和std::merge实现这个 ...
- 【题解】地精部落(DP)
[题解]地精部落(DP) 设\(f_i\)表示强制第一个是谷的合法方案数 转移枚举一个排列的最大值在哪里,就把序列分成了互不相干的两个部分,把其中\(i-1\choose j-1\)的数字分配给前面部 ...
- appium整个环境安装详细教程(重要)
环境依赖 Node.js Appium Appium-desktop Appium-doctor Appium-Python-Client Python JDK Andriod SDK 以上所需的软件 ...
- Oracle 数据泵expdq,impdq
使用数据泵技术实现逻辑备份 数据泵概述 数据泵(DATA PUMP)是一种在数据库之间.数据库与操作系统之间,高速传输数据的技术(10g推出). 逻辑备份概述 逻辑备份是对数据库对象(如用户.表.存储 ...
- 1069 微博转发抽奖 (20分)C语言
小明 PAT 考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔 N 个人就发出一个红包.请你编写程序帮助他确定中奖名单. 输入格式: 输入第一行给出三个正整数 M(≤ 1000). ...
- Spring Boot 添加Druid连接池(1.5 版本)
Druid是一个关系型数据库连接池,是阿里巴巴的一个开源项目,地址:https://github.com/alibaba/druid .Druid不但提供连接池的功能,还提供监控功能,可以实时查看数据 ...
- mysql报错1548-Cannot load from mysql.proc. The table is probably corrupted
我的版本是5.5.53, 进入到MYSQL-front后,一点击localhost就报错 网上的例子都是说使用mysql_upgrade更新 但是我的是在phpstudy里的mysql,并没有mysq ...
- 二分查找LintcodeNo14
14First Position of Target 二分查找的基础题 STL lower_bound实现 class Solution { public: /** * @param nums: Th ...
- Class 'org.apache.tomcat.jdbc.pool.DataSource' not found
把项目移动到新的运行环境时,明明包都导入了,项目也放进tomcat里面了,但是还会找不到该类 解决方法:项目右键选择底下的Properties ->project facets ->jav ...
- 变量的取用与设定:echo,变量设定规则,unset
1.变量的取用echo echo $variable echo ${variable} 2.变量的设定规则 3.让我设定的name=VBird应用在下个应用程序 4.进入到核心的模块目录 5.取消设定 ...