Forums

Home / Forums

You need to log in to create posts and topics. Login · Register

Error creating new cluster

Hi,

I'm trying to create a new cluster. The install was done with the PetaSAN 3.1.0 ISO without problem. Alas when I choose "New cluster" in the web wizard and fill in a cluster name and passwords and press next I get an internal server error. The last lines of the file /opt/petasan/log/PetaSAN.log are below.

Is this a known problem and how can I fix this ?

30/05/2022 16:24:21 INFO     Created keys for cluster test
30/05/2022 16:24:21 INFO     Created cluster file and set cluster name to test
30/05/2022 16:24:21 INFO     password set successfully.
30/05/2022 16:24:21 ERROR    list index out of range
30/05/2022 16:24:21 ERROR    Exception on / [GET]
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/flask/app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/lib/python3/dist-packages/flask/app.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/lib/python3/dist-packages/flask/_compat.py", line 39, in reraise
raise value
File "/usr/lib/python3/dist-packages/flask/app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1935, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/lib/python3/dist-packages/PetaSAN/web/deploy_controller/wizard.py", line 179, in main
interfaces_json = eths_ls[0]
TypeError: 'Response' object is not subscriptable
30/05/2022 16:33:16 ERROR    Config file error. The PetaSAN os maybe just installed.
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/PetaSAN/backend/cluster/deploy.py", line 75, in get_node_status
node_name = config.get_node_info().name
File "/usr/lib/python3/dist-packages/PetaSAN/core/cluster/configuration.py", line 99, in get_node_info
with open(config.get_node_info_file_path(), 'r') as f:
FileNotFoundError: [Errno 2] No such file or directory: '/opt/petasan/config/node_info.json'

Since this looks a bit like the problem reported in this forum by dbutti with the topic "Node roles and network interfaces not accessible in GUI after upgrade to 3.1.0" here also the information requested there on my machine:

root@peta1:~# /opt/petasan/scripts/detect-interfaces.sh
device=eth0,mac=26:b2:16:1e:a5:6a,pci=00:12.0,model=Red Hat, Inc. Virtio network device,path=ens18
device=eth1,mac=b6:49:37:58:40:77,pci=00:13.0,model=Red Hat, Inc. Virtio network device,path=ens19

/etc/udev/rules.d/70-persistent-net.rules

# ADDED BY PETASAN, DO NOT MODIFY : DEFAULT_NAME=ens18, ASSIGNED_NAME=eth0
# ADDED BY PETASAN, DO NOT MODIFY : DEFAULT_NAME=ens19, ASSIGNED_NAME=eth1

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="26:b2:16:1e:a5:6a", ATTR{type}=="1", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="b6:49:37:58:40:77", ATTR{type}=="1", NAME="eth1"

/etc/udev/rules.d/75-persistent-net-generator.rules

SUBSYSTEM!="net", GOTO="persistent_net_generator_end"
ACTION!="add", GOTO="persistent_net_generator_end"
NAME=="?*", GOTO="persistent_net_generator_end"
KERNEL!="eth*|en*|wlan*", GOTO="persistent_net_generator_end"
DRIVERS=="?*", IMPORT{program}="/opt/petasan/scripts/util/if-name-generator.py $attr{address} %k "
ENV{PS_INTERFACE_NAME}=="?*", NAME="$env{PS_INTERFACE_NAME}"
LABEL="persistent_net_generator_end"

After more reading on the forum: I have exactly te same problem as user benda in topic "Cannot create cluster Ver. 3.0.2". I installed a fresh machine with 3.0.3 and got the exact same error.

I understand this is virtualized environment ? can you give detail please.

I suspect the udev info on the Ethernet card vendor contains a ',' comma character :  Red Hat , Inc

If so this is probably confusing the parsing we do as we expect a comma separated key/values during parsing.

After you enter the cluster password, you should be able to use this password to log/ssh into the node with root user (even if you get an error in the ui ). So ssh into the node:

try

udevadm info /sys/class/net/eth0

and look at the ID_VENDOR_FROM_DATABASE field, if indeed it is "Red Hat , Inc"

then you can use nano or winscp to edit the script:

/opt/petasan/scripts/detect-interfaces.sh

change line

VENDOR=$(echo "$INFO" | grep ID_VENDOR_FROM_DATABASE | cut -f2 -d = )

to

VENDOR=$(echo "$INFO" | grep ID_VENDOR_FROM_DATABASE | cut -f2 -d = | tr ',' ' ')

Effectively we are replacing the , with space.

Save the script then restart Deployment Wizard service:

systemctl restart petasan-deploy

if this works, you need to repeat the same steps on every new node being deployed. Instead of waiting to add password then ssh, you can use the blue node console menu to open a back script (available before node is deployed) and use nano or vi to edit the script, then restart the service.

Indeed this is virtualized. I'm evaluating/learning PetaSAN installed in a KVM on Proxmox PVE. This is not and will not be for production. That will be on bare metal.

This is the info from the DB:

root@p1:~# udevadm info /sys/class/net/eth0
P: /devices/pci0000:00/0000:00:12.0/virtio2/net/eth0
L: 0
E: DEVPATH=/devices/pci0000:00/0000:00:12.0/virtio2/net/eth0
E: INTERFACE=eth0
E: IFINDEX=2
E: SUBSYSTEM=net
E: USEC_INITIALIZED=747003
E: ID_NET_NAMING_SCHEME=v245
E: ID_NET_NAME_MAC=enx0afdd0784b20
E: ID_NET_NAME_PATH=enp0s18
E: ID_NET_NAME_SLOT=ens18
E: ID_BUS=pci
E: ID_VENDOR_ID=0x1af4
E: ID_MODEL_ID=0x1000
E: ID_PCI_CLASS_FROM_DATABASE=Network controller
E: ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
E: ID_VENDOR_FROM_DATABASE=Red Hat, Inc.
E: ID_MODEL_FROM_DATABASE=Virtio network device
E: ID_PATH=pci-0000:00:12.0
E: ID_PATH_TAG=pci-0000_00_12_0
E: ID_NET_DRIVER=virtio_net
E: ID_NET_LINK_FILE=/usr/lib/systemd/network/99-default.link
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/eth0 /sys/subsystem/net/devices/eth0
E: ID_NET_NAME=eth0
E: TAGS=:systemd:

After changes to the script as described and restarting the deployment I can complete the "New cluster" wizard.

Thanks a million !

(Yes, when in production I'll strongly advise my client to purchase a support plan. Great work !)